2015-10-14 76 views
0

當我使用嘗試輸出值在HTML通過Django的數據類型{{VARNAME}},我的查詢返回的值是這樣,的Python/Django的返回與變量值

(Decimal('567.45'),) 
25L 
u'test text' 

爲什麼數據類型用變量值重新調整?我注意到這並不總是發生。例如對於下面的查詢發生此問題。

x = list(SegModel.objects.filter(**filterargs).order_by('id').values_list('var_type')) 
y = x[0] 

但是,如果我做了以下我沒有這個問題,實際變量沒有他們的數據類型返回。

obj = SegModel.objects.filter(**filterargs).order_by('id') 

for x in obj: 
     y = x.var_type 

有人可以解釋爲什麼會發生這種情況嗎?

感謝, 馬尼什

回答

0

我一樣做你說了.. BT了時間輸出相同 我要做的就是:

s = list(School.objects.all().order_by('id').values_list('school_code')) 
     print "list(School.objects.filter(**filterargs).order_by('id').values_list('var_type')):",s 
     ex = School.objects.all().order_by('id') 
     for i in ex: 
      print "i.var_type:",i.school_code 

因此其輸出爲:

list(School.objects.filter(**filterargs).order_by('id').values_list('var_type')): [(u'BFS',), (u'APS',)] 
i.var_type: BFS 
i.var_type: APS 

所以這有什麼奇怪的......可能你犯了錯誤。

+0

你可以嘗試在html中輸出你的值嗎?那是我面臨這個問題的時候。我正在編輯這個細節的問題。 –

+0

okk ..我用這個我我的看法: s = list(Student_Info.objects.all()。order_by('id')。values_list('student_First_Name')) context_dict = {'bold_message':「Hello World」 , '列表':S} 在teplate: {%爲在列表%STU} \t \t \t \t \t​​{{STU}} \t \t \t \t {%ENDFOR%} BT仍然給出正確的答案。即只有價值。 –

+0

這很奇怪。也許我們的差異來自其他地方。 –

0

我只注意到這一點,

>>> x=u'gtre' 
>>> x 
u'gtre' 
>>> y='gtre' 
>>> y 
'gtre' 
>>> x==y 
True 
>>> type(x) 
<type 'unicode'> 
>>> type(y) 
<type 'str'> 
>>> str(x) 
'gtre' 

所以很明顯變量類型返回只有某些類型。在這種情況下,unicode,而str返回沒有類型的普通值。

因此,如果將來我得到這個問題,我知道如何解決這個問題。

>>> str(x) 
'gtre' 
>>> x 
u'gtre' 

但誰能告訴我,而在Django/Python的是什麼決定了這些類型進行查詢(海峽或Unicode的如。)?有沒有默認?