2011-07-05 87 views
9

我有一个名为client_details.html的模板,显示user,notedatetime。现在有时,客户可能没有用户,笔记和日期时间的条目。如果这些字段为空,我的程序将执行的操作是显示None。我不想显示无。如果一个字段没有值,我不希望看到任何值,例如如果可能,请将其设为空白,而不是显示无。Django:要显示空白字段为空而不显示无

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

你可以使用:

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

如果我检查如果你想...

59

使用内置的default_if_none过滤器。

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

还有'default'过滤器,但'default_if_none'更具体。如果你正在处理这些事物的模型实例,那么它们都会出现同样的情况。 –

4

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

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

你永远不需要改变你的模板来改变这个领域在将来,只需修改你的财产。