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

She*_*009 17 python django null

我有一个名为client_details.html的模板,显示user,notedatetime.现在有时,客户端可能没有用户,注释和日期时间的条目.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))
Run Code Online (Sandbox Code Playgroud)

模板

{{client.datetime}}<br/> 
{{client.datetime.time}}<br/>  
{{client.user}}<br/>
{{client.note}}<br/>
Run Code Online (Sandbox Code Playgroud)

Chr*_*gan 85

使用内置default_if_none过滤器.

{{ client.user|default_if_none:"&nbsp;" }}
{{ client.user|default_if_none:"" }}
Run Code Online (Sandbox Code Playgroud)

  • 还有 `default` 过滤器,但 `default_if_none` 更具体。如果你正在处理这些事情的模型实例,那么它都会变成同样的事情。 (2认同)

Fal*_*gel 8

你可以使用:

{% if client %} {{client.user}} {% else %} &nbsp; {% endif %}
Run Code Online (Sandbox Code Playgroud)

使用if 进行检查就足够了,因此如果您愿意,您可能不会使用 else 阻止...


Man*_*ahu 7

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

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

    @property
    def get_myfield(self)
        if self.myfield:
              return self.myfield
        else:
              return ""
Run Code Online (Sandbox Code Playgroud)

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

 {{ExampleModel.get_myfield}}
Run Code Online (Sandbox Code Playgroud)

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