None, False and True
tous sont disponibles dans les balises de modèle et les filtres. None, False
, la chaîne vide ( '', "", """"""
) et les listes / tuples vides sont toutes évaluées False
lorsqu'elles sont évaluées par if
, donc vous pouvez facilement le 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 des trucs comme ça 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 :)
{% if profile.user.first_name is None %}
provoque une erreur de syntaxe dans le modèle Django.default_if_none
filtre dans le modèle?Vous pouvez également utiliser un autre modèle intégré
default_if_none
la source
date
premier. Si une erreur se produit, elle renverra None. Ensuite, vous postulezdefault_if_none
.is
opérateur: Nouveau dans Django 1.10la source
Regardez l' assistant yesno
Par exemple:
la source
{% if profile.user.first_name %}
fonctionne (en supposant que vous ne vouliez pas non plus accepter''
).if
en Python en général traiteNone
,False
,''
,[]
,{}
, ... tout aussi faux.la source
Vous pouvez également utiliser le filtre de modèle intégré
default
:Si la valeur est évaluée à False (par exemple None, une chaîne vide, 0, False); le "-" par défaut est affiché.
Documentation: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
la source
Vous pouvez essayer ceci:
De cette façon, vous vérifiez essentiellement si le champ de formulaire
first_name
a une valeur qui lui est associée. Voir{{ field.value }}
en boucle sur les champs du formulaire dans la documentation Django .J'utilise Django 3.0.
la source