2012-12-20 41 views
1

我有一個非常簡單的IntegerField在我的一個模型。Django爲什麼空白IntegerField的值在自定義表單中顯示爲「無」?

models.py

## Imports 

from django.db import models 

class UserModel(models.Model) 
    name = models.CharField(max_length=50) 


class NumberModel(models.Model) 
    user = models.ForeignKey(UserModel) 
    number = models.IntegerField(blank=True, null=True) # This is the IntegerField 
在我傳遞的數量模型本身的意見

views.py

def change_user_number(request): 
    number = get_object_or_404(models.NumberModel, user=request.user) 
    return render_to_response('change_number.html', {'number' : number }, context_instance=RequestContext(request)) 

現在,當我使用所提及的上述價值整數在我的一個自定義表單中,它顯示如下:

Text Field with blank IntegerField's Value

在模板我有這樣的事情:

模板

<form id="" action="" method="POST"> 
    <p><label for="user_number"></label></p> 
    <p><input type="text" name="user_number" id="user_number" value="{{ number.number }}" /> 
    <input type="submit" value="submit" /> 
</form> 

我想只顯示,如果該值存在的價值。我很確定這個值在數據庫中保存爲空,但爲什麼它會返回"None"

我也試過以下沒有成功。

<input type="text" name="user_number" id="user_number" {% if number.number == "None" %} value="" {% else %} value="{{ number.number }}" {% endif %} /> 
+0

它在數據庫的字段上讀取Null嗎? –

+0

是@RickardZachrisson在db – Amyth

+0

中顯示的值爲空,儘管如果我從shell中鍵入(數字),它將返回'NoneType' – Amyth

回答

1

檢查是否存在的價值:

{% if number.number %} 
+0

您的意思是{%if number.number%}?正如在上面的例子中'number'是當前存在的NumberModel實例。 – Amyth

+0

是的,我的意思是 – inoks

+0

是的我已經檢查了它在上面的問題中提到。但輸入字段中仍然顯示「None」。 – Amyth

3

number.numberNone,它會被存儲在數據庫中的空。正如丹尼爾在評論中所說,None與字符串"None"不一樣,這就是爲什麼你的比較不起作用。

我建議您使用default_if_none模板過濾器。

{{ number.number|default_if_none:"" }} 

此區分,如果值是0None之間。

+0

謝謝@Alasdair我不知道這個模板標籤。這有幫助! – Amyth

相關問題