2010-05-27 3 views
2

L'extrait de code suivant dans un modèle Django (v 1.1) ne fonctionne pas.Comportement étrange (au moins pour moi) dans le modèle Django

{{ item.vendors.all.0 }} ==> returns "Test" 

mais l'extrait de code suivant, ne masque pas le paragraphe!

{% ifnotequal item.vendors.all.0 "Test" %} 
<p class="view_vendor">Vendor(s): {{item.vendors.all.0}} </p><br /> 
{% endifnotequal %} 

Des conseils sur ce qui ne va pas?

Merci.

Répondre

6

item.vendors.all.0 ne retourne pas "Test": Il renvoie un objet fournisseur, qui donne "Test" lorsqu'il est converti en chaîne. Si vous comparez simplement l'objet avec "Test", il ne sera jamais égal.

Essayez de convertir l'objet à une chaîne avant de comparer:

{% ifnotequal item.vendors.all.0|stringformat:"s" "Test" %} 
+3

Ou 'ifnotequal item.vendors.all.0.name "Test"', où 'name' est le champ de modèle pertinent. –

+0

J'ai réalisé qu'il renvoyait l'objet "vendeur", c'est-à-dire que la méthode __unicode__ est appelée lorsque j'imprime, mais pas quand je les compare. Mais quand j'imprime "nom", le champ du modèle est vide ... Mais la solution fonctionne bien. Merci. – lud0h