在我的项目中,我有一个类,NewsItem。 NewsItem的实例就像一个包装器。它们可以与ArtWork实例或Announcement实例相关联。
以下是NewsItem模型的外观:
class NewsItem(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') date = models.DateTimeField(default=datetime.datetime.now,) class Meta: ordering = ('-date',) def __unicode__(self): return (self.title())
在一个模板中,我正在处理一个NewsItem实例,并希望输出一些html它'包装'一个Artwork实例,如果它包装一个Announcement实例则输出一堆不同的html。有人可以解释我如何编写条件来测试它吗?
我的第一次天真尝试看起来像这样:
{% if news_item.content_object.type=='Artwork' %}do this{% else %}do that{% endif %}
答案 0 :(得分:4)
您应该使用ForeignKey来存储此信息的content_type
。
{% if news_item.content_type.model == 'Artwork' %}