122 votes

Quel est l'équivalent de "none" dans les modèles de django ?

Je veux voir si un champ/variable est inexistant dans un modèle Django. Quelle est la syntaxe correcte pour cela ?

Voici ce que j'ai actuellement :

{% if profile.user.first_name is null %}
  <p> -- </p>
{% elif %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}

Dans l'exemple ci-dessus, qu'est-ce que j'utiliserais pour remplacer "null" ?

158voto

Gerard Points 1379

None, False and True sont tous disponibles dans les balises et les filtres des modèles. None, False la chaîne vide ( '', "", """""" ) et les listes/tuples vides sont tous évalués à False lorsqu'il est évalué par if donc vous pouvez facilement faire

{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}

Un indice : @fabiocerqueira a raison, laissez la logique aux modèles, limitez les modèles à la seule couche de présentation et calculez ce genre de choses dans votre modèle. Un exemple :

# someapp/models.py
class UserProfile(models.Model):
    user = models.OneToOneField('auth.User')
    # other fields

    def get_full_name(self):
        if not self.user.first_name:
            return
        return ' '.join([self.user.first_name, self.user.last_name])

# template
{{ user.get_profile.get_full_name }}

J'espère que cela vous aidera :)

88voto

Babacar Gningue Points 524

Vous pouvez également utiliser un autre modèle intégré default_if_none

{{ profile.user.first_name|default_if_none:"--" }}

13voto

Louis Points 106

Vous pouvez également utiliser le filtre de modèle intégré default :

Si la valeur vaut False (par exemple, None, une chaîne vide, 0, False), la valeur par défaut "--" est affichée.

{{ profile.user.first_name|default:"--" }}

Documentation : https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default

12voto

user6763622 Points 129

is opérateur : Nouveau dans Django 1.10

{% if somevar is None %}
  This appears if somevar is None, or if somevar is not found in the context.
{% endif %}

5voto

mwjackson Points 1677

Regardez le ouinon aide

Eg :

{{ myValue|yesno:"itwasTrue,itWasFalse,itWasNone" }}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X