2009-10-13 10 views
1

Suite à ma question link text je voudrais séparer les fonctionnalités du modèle en utilisant des catégories telles que l'intérieur, Extérieur, mécanique, etc.séparatrices ManyToManyFields dans un modèle

J'essaie le code ci-dessous, mais apparemment ça ne me donne pas ce que je veux.

{% for feature in vehicle.features.all %} 
    {% ifequal vehicle.features.type.type "Interior" %} 
    <li>{{ feature }}</li> 
    {% endifequal %} 
{% endfor %} 

Comment procéder?

Répondre

1

Vous voulez:

{% for feature in vehicle.features.all %} 
    {% ifequal feature.type.type "Interior" %} 
     <li>{{ feature }}</li> 
    {% endifequal %} 
{% endfor %} 

vehicle.features est un ManyToManyRelatedManager qui peut être utilisé pour accéder à Feature objets, mais ne porte pas réellement les relations Feature.

EDIT: En réponse au commentaire ci-dessous au sujet de le faire sur la vue, vous pouvez facilement faire:

interior_features = vehicle.features.filter(type__type='Interior') 

et passer interior_features au contexte du modèle directement. Cela fait plus de sens comme une méthode sur le modèle:

def get_interior_features(self): 
    return self.features.filter(type__type='Interior') 

Le résultat de cela pourrait être filtré plus, bien sûr, au besoin.

options = vehicle.get_interior_features().filter(is_standard=False) 

ou quelque chose.

+0

merci jcd ... ça a marché comme un charme –

+0

BTW ... je me demandais simplement s'il y avait un moyen de le faire à l'intérieur de ma vue avant de rendre sur le template? –

+0

vous êtes une bouée de sauvetage ... merci. Je reviendrais voter si je le pouvais :) –

Questions connexes