【问题标题】:Django: way to test what class a generic relation content_object is?Django:测试通用关系 content_object 是什么类的方法?
【发布时间】:2011-02-16 10:41:59
【问题描述】:

在我的项目中,我有一个类 NewsItem。 NewsItem 的实例就像一个包装器。它们可以与 ArtWork 实例或 Announcement 实例相关联。

NewsItem 模型的外观如下:

类 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,)
 元类:
  排序 = ('-date',)
 def __unicode__(self):
  返回 (self.title())

在一个模板中,我正在处理一个 NewsItem 实例,并且想要输出一组 html,它正在“包装”一个 Artwork 实例,如果它正在包装一个 Announcement 实例,则输出另一组 html。有人可以解释我如何编写一个条件来测试这个吗?

我的第一次天真的尝试是这样的:

{% if news_item.content_object.type=='Artwork' %}do this{% else %}do that{% endif %}

【问题讨论】:

    标签: django class polymorphism


    【解决方案1】:

    您应该使用存储此信息的 content_type 的 ForeignKey。

    {% if news_item.content_type.model == 'Artwork' %}
    

    【讨论】:

    • 啊,太简单了!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多