# 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 }}
{% for field in form.visible_fields %}
{% if field.name == 'some_field' %}
{% if field.value is Null %}
{{ 'No data found' }}
{% else %}
{{ field }}
{% endif %}
{% endif %}
{% endfor %}
9条答案
按热度按时间14ifxucb1#
None, False and True
都可以在模板标签和过滤器中使用。None, False
、空字符串('', "", """"""
)和空列表/元组在由if
求值时都求值为False
,因此您可以轻松地提示:@fabiocerqueira是对的,把逻辑留给模型,把模板限制为唯一的表示层,并在模型中计算类似的东西。
xmd2e60i2#
您还可以使用另一个内置模板
default_if_none
wlzqhblo3#
您还可以使用内置模板过滤器
default
:如果值的计算结果为False(例如,None、空字符串、0、False);显示默认值“--”。
文件:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
olqngx594#
is
操作员:Django 1.10中的新功能mbskvtky5#
看看这个yesno助手
例如:
eaf3rand6#
{% if profile.user.first_name %}
可以工作(假设您也不想接受''
)。Python中的
if
通常会将None
、False
、''
、[]
、{}
...全部视为false。im9ewurl7#
如果我们需要验证具有
null
值的字段,我们可以进行检查,并按如下所述进行处理:exdqitrt8#
你可以试试这个:
这样,你实际上是在检查表单字段
first_name
是否有任何值与之关联。参见Django文档中的循环表单字段中的{{ field.value }}
。我用的是Django 3.0。
uyhoqukh9#
关于之前的答案,请注意:如果我们想显示一个字符串,那么一切都是正确的,但是如果你想显示数字的话要注意。
特别是当你有一个0值
bool(0)
的计算结果为False
,所以它不会显示,可能不是你想要的。在这种情况下更好地使用