She*_*009 17 python django null
我有一个名为client_details.html的模板,显示user,note和datetime.现在有时,客户端可能没有用户,注释和日期时间的条目.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:" " }}
{{ client.user|default_if_none:"" }}
Run Code Online (Sandbox Code Playgroud)
你可以使用:
{% if client %} {{client.user}} {% else %} {% endif %}
Run Code Online (Sandbox Code Playgroud)
使用if 进行检查就足够了,因此如果您愿意,您可能不会使用 else 阻止...
这是一个奇怪的问题.我有个好主意.如果要在显示时修改字段而不是在模板中检查字段,请在模型类中进行检查.
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)
您永远不需要更改模板来更改此字段,只需修改您的属性即可.