2011-07-05 136 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}} 

你永遠不需要改變你的模板來改變這個領域在將來,只需修改你的財產。