None, False and True
todos estão disponíveis em tags e filtros de modelo. None, False
, a string vazia ( '', "", """"""
) e as listas / tuplas vazias são avaliadas False
quando avaliadas por if
, então você pode fazer facilmente
{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}
Uma dica: @fabiocerqueira tem razão, deixe a lógica para os modelos, limite os templates para serem a única camada de apresentação e calcule coisas assim no seu modelo. Um exemplo:
# 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 }}
Espero que isto ajude :)
{% if profile.user.first_name is None %}
causa erro de sintaxe no template do Django.default_if_none
filtro no modelo?Você também pode usar outro modelo integrado
default_if_none
fonte
date
primeiro. Se ocorrer algum erro, ele retornará Nenhum. Então você aplicadefault_if_none
.is
operador: Novo no Django 1.10fonte
Olhe para o ajudante yesno
Por exemplo:
fonte
{% if profile.user.first_name %}
funciona (supondo que você também não queira aceitar''
).if
em Python em guloseimas geraisNone
,False
,''
,[]
,{}
, ... tudo como falsa.fonte
Você também pode usar o filtro de modelo integrado
default
:Se o valor for avaliado como False (por exemplo, Nenhum, uma string vazia, 0, False); o padrão "-" é exibido.
Documentação: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
fonte
Você pode tentar isto:
Dessa forma, você está essencialmente verificando se o campo do formulário
first_name
tem algum valor associado a ele. Veja{{ field.value }}
em Loop sobre os campos do formulário na Documentação do Django .Estou usando Django 3.0.
fonte