Django: 希望将空字段显示为空白而不是None

36 投票
3 回答
21446 浏览
提问于 2025-04-16 20:52

我有一个叫做 client_details.html 的模板,它会显示 user(用户)、note(备注)和 datetime(日期时间)。但是,有时候客户可能没有填写用户、备注和日期时间这些信息。我的程序现在会在这些字段为空的时候显示 None。我不想让它显示 None。如果某个字段没有值,我希望它能保持空白,而不是显示 None。

views.py

@login_required
def get_client(request, client_id = 0):
    client = None
    try:
        client = models.Client.objects.get(pk = client_id)
    except:
        pass
    return render_to_response('client_details.html', {'client':client}, context_instance = RequestContext(request))

模板

{{client.datetime}}<br/> 
{{client.datetime.time}}<br/>  
{{client.user}}<br/>
{{client.note}}<br/>

3 个回答

7

这个问题真是奇怪。

我有个好主意。如果你想在显示的时候修改你的字段,那就不要在模板里检查,而是在你的模型类里检查。

ExampleModel(models.Model):
    myfield = models.CharField(blank=True, null = True)

    @property
    def get_myfield(self)
        if self.myfield:
              return self.myfield
        else:
              return ""

直接在你的模板中使用它,而不是使用字段。

 {{ExampleModel.get_myfield}}

这样你将来想要改变这个字段时,就不需要修改模板,只需要改你的属性就可以了。

145

使用内置的 default_if_none 过滤器。

{{ client.user|default_if_none:"&nbsp;" }}
{{ client.user|default_if_none:"" }}
8

你可以使用:

{% if client %} {{client.user}} {% else %} &nbsp; {% endif %}

只用if来检查就可以了,如果你想的话,可以不使用else部分...

撰写回答