我想模擬一個情況,而且我很難處理它。該域名是這樣的:有帖子,每個帖子都必須與MediaContent一一對應。 MediaContent可以是圖片或視頻(現在可能是音樂)。所以,我有什麼是:在django中處理一般關係時遇到的問題
mediacontents/models.py
class MediaContent(models.Model):
uploader = models.ForeignKey(User)
title = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
def draw_item(self):
pass
class Meta:
abstract = True
class Picture(MediaContent):
picture = models.ImageField(upload_to='pictures')
class Video(MediaContent):
identifier = models.CharField(max_length=30) #youtube id
帖子/ models.py
class Post(models.Model):
...
# link to MediaContent
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
media_content = generic.GenericForeignKey('content_type', 'object_id')
我最終想要做的,是beeing能夠調用的方法,如:
post1.media_content.draw_item()
>> <iframe src="youtube.com" ...>
post2.media_content.draw_item()
>> <img src="..."/>
這是正確的方法嗎?模板可以不知道下面的對象嗎?
我看不出有什麼問題。只要定義你的方法來說明media_content類型(圖片或視頻)的差異,你應該沒問題;似乎並不困難。 – JEEND0 2011-05-04 22:45:04