我想模拟一个情况,而且我很难处理它。该域名是这样的:有帖子,每个帖子都必须与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