Django: способ проверить, к какому классу относится общее отношение content_object? - PullRequest
1 голос
/ 06 мая 2010

В моем проекте у меня есть класс 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 %}

1 Ответ

4 голосов
/ 06 мая 2010

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

{% if news_item.content_type.model == 'Artwork' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...