Cela semble assez simple mais je ne suis pas en mesure de trouver une bonne solution de SO ou docs Django (en utilisant Django 1.10)modèle Django - vérifier si le champ a une valeur en elle ou vide si ManyToManyField
Je récupère une objet modèle dans le modèle et affichant uniquement les champs qui ont des valeurs (c.-à-d. non vides ou nuls) ou non vides si ManyToManyField.
Je ne suis pas en mesure de trouver un bon moyen de le faire en dehors de l'utilisation de nombreux if
et else
pour vérifier le type de champ, puis exécutez la condition correspondante if
.
{% if model_name.field_name %}
retourne toujours true
pour ManytoManyField
s (depuis son un ManyRelatedManager
)
{% if model_name.field_name|length > 0 %}
retourne toujours false
pour ManytoManyField
s
{% if model_name.field_name.all %}
peut fonctionner correctement pour ManyToManyFields
mais pas pour d'autres (comme CharField
)
Existe-t-il une seule façon de vérifier si un champ a une certaine valeur utilisable à l'intérieur (que ce soit ManytoManyField
ou un simple CharField
)? Je peux utiliser if-else
pour vérifier le type de champ en premier, puis exécuter la vérification correspondante, mais cela semble contre-intuitif car cela ressemble à un cas d'utilisation courant pour justifier une balise de gabarit.
Si vous avez besoin d'une telle logique, il serait peut-être préférable de le mettre dans votre 'views.py'. Les objets associés d'un objet ManyToManyField ou d'un objet ForeignKeyField doivent être appelés avec une méthode du gestionnaire de liens: 'all', ou peut-être' filter'. – cezar
@cezar - merci, j'ai déplacé la logique à views.py.Posté mon code final en tant que réponse. – Anupam