Django:想要将空字段显示为空白而不显示无

时间:2011-07-05 14:23:43

标签: python django null

我有一个名为client_details.html的模板,显示usernotedatetime。现在有时,客户端可能没有用户,注释和日期时间的条目。如果这些字段为空,我的程序将改为显示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 个答案:

答案 0 :(得分:77)

使用内置的default_if_none过滤器。

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

答案 1 :(得分:5)

这是一个奇怪的问题。 我有个好主意。如果您想在显示时修改字段,而不是在模板上进行检查,请在模型类中进行检查。

clang

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

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

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

您以后永远不需要更改模板来更改此字段,只需修改您的属性即可。

答案 2 :(得分:4)

你可以使用:

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

使用检查是否足够,因此如果您愿意,可能不会使用其他用户阻止...