Django:如何将空字段显示为空白而不是显示None

36
我有一个名为client_details.html的模板,用于显示用户、备注和日期时间。现在有时候客户可能没有用户、备注或日期时间的条目。如果这些字段为空,我的程序会显示“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个回答

141

使用内置的default_if_none过滤器。


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

3
还有default过滤器,但是default_if_none更加具体。如果你在处理这些东西的时候使用模型实例,那么结果都是一样的。 - Chris Morgan
这应该是选择的答案。 - Tech

8

您可以使用:

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

如果只是检查一个条件,使用if就足够了,所以如果你不需要的话,可以不使用else块...


这对于没有值的整数不起作用。 - AgentNirmites

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}}

未来您无需更改模板即可修改此字段,只需修改属性即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接