Django: способ проверить, к какому классу относится общее отношение content_object?

В моем проекте есть класс NewsItem. Экземпляры NewsItem действуют как оболочка. Они могут быть связаны либо с экземпляром ArtWork, либо с экземпляром объявления.

Вот как выглядит модель 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, и другую группу html, если она обертывает экземпляр Announcement. Может ли кто-нибудь объяснить, как я могу написать условное выражение для проверки этого?

Моя первая наивная попытка выглядела так:

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

person bitbutter    schedule 06.05.2010    source источник


Ответы (1)


Вы должны использовать ForeignKey для content_type, в котором хранится эта информация.

{% if news_item.content_type.model == 'Artwork' %}
person Daniel Roseman    schedule 06.05.2010
comment
Ах так просто! Большое спасибо. - person bitbutter; 06.05.2010