2012-04-04 3 views
2

У меня есть модель с полем ContentType.django contenttype и сравнение строк

В любом методе модели я могу сравнить его в строку:

self.content_type == "construction" # True if ContentObject points to Construction model. 

Однако такая вещь, кажется, не работает в шаблонах.

Первое, что я попытался

{% if object.content_type == "construction" %} 

И второе:

def __unicode__(self): 
    return str(self.content_type) 
`{% if object == "construction" %}` 

и это значение False, но {{объект}} печатает construction.

+2

Попробуйте: '{% if object.content_type.model ==" construction "%}' –

ответ

4

Метод unicode для ContentType просто отображает имя, поэтому {{ object }} отображает construction в шаблоне.

class ContentType(models.Model): 
    ... 
    def __unicode__(self): 
     return self.name 

Однако object.content_type является ContentType экземпляр, а не строка, поэтому сравнивая его «строительство» всегда будет возвращать False. Попробуйте вместо этого сравнить тип контента model.

{% if object.content_type.model == "construction" %} 
Смежные вопросы