2011-07-05 49 views
9

usernotedatetimeと表示されるclient_details.htmlというテンプレートがあります。今や、クライアントは、user、note、datetimeのエントリを持っていないことがあります。これらのフィールドが空の場合は、代わりに私のプログラムはNoneと表示されます。私にはNoneを表示させたくありません。フィールドに値がない場合、値は表示されません。可能であれば、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}} 

今後このフィールドを変更するためにテンプレートを変更する必要はありません。プロパティを変更するだけです。

関連する問題