2012-04-04 2 views
2

Ich habe ein Modell mit ContentType-Feld drin.Django ContentType und String-Vergleich

In jedem Modell Methode kann ich es auf den String vergleichen:

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

Allerdings ist eine solche Sache nicht in Vorlagen zu funktionieren scheint.

Das erste, was ich versuchte

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

Und zweitens:

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

und es ist falsch, aber {{object}} druckt construction.

+2

Versuchen Sie: '{% if object.content_type.model ==" construction "%}' –

Antwort

4

Die Unicode-Methode für ContentType zeigt einfach den Namen an, weshalb in der Vorlage {{ object }}construction angezeigt wird.

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

jedoch object.content_type ist ein ContentType Beispiel kein String, vergleicht es so zu "Bau" wird immer False zurück. Versuchen Sie stattdessen, den Inhaltstyp model zu vergleichen.

{% if object.content_type.model == "construction" %} 
Verwandte Themen