Je veux voir si un champ/variable est nul dans un modèle Django. Quelle est la syntaxe correcte pour cela?
C'est 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, que pourrais-je utiliser pour remplacer "null"?
None, False and True
tous sont disponibles dans les balises et les filtres de modèles. None, False
, la chaîne vide ('', "", """"""
) et les listes/les nuplets vides s’évaluent tous en False
lorsqu’ils sont évalués par if
, vous pouvez donc le faire facilement.
{% 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 à être 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 t'aides :)
Vous pouvez également utiliser un autre modèle intégré default_if_none
{{ profile.user.first_name|default_if_none:"--" }}
is
opérateur: Nouveauté Django 1.10
{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}
Vous pouvez également utiliser le filtre de modèle intégré default
:
Si la valeur est évaluée à False (par exemple, Aucune, une chaîne vide, 0, False); "-" par défaut est affiché.
{{ profile.user.first_name|default:"--" }}
Documentation: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
{% if profile.user.first_name %}
fonctionne (en supposant que vous ne voulez pas non plus accepter ''
).
if
in Python traite en général None
, False
, ''
, []
, {}
, ... tout comme faux.
Vous n'avez pas besoin de faire ceci 'if', utilisez: {{ profile.user.get_full_name }}