2011-10-21 45 views
3

[更新:軟件版本的Python 2.7.2,Django的1.3.1]簡單Djanqo查詢產生混淆的QuerySet結果

任何人都可以解釋此控制檯代碼嗎?

FinishingStep具有一個到引用對象的ForeignKey,但這並不真正相關。

>>> fins = FinishingStep.objects.filter(quote=jq) 
>>> fins 
[<FinishingStep: Tabbing>, <FinishingStep: Collator>] 

到目前爲止好,我們又回到一個QuerySet有兩個對象。

但現在混亂。兩個對象現在看起來是一樣的:

>>> fins[0] 
<FinishingStep: Collator> 
>>> fins[1] 
<FinishingStep: Collator> 

將其轉換爲列表,並修復它。

>>> fins = list(fins) 
>>> fins 
[<FinishingStep: Tabbing>, <FinishingStep: Collator>] 
>>> fins[0] 
<FinishingStep: Tabbing> 
>>> fins[1] 
<FinishingStep: Collator> 

[更新:添加.distinct()來查詢還修復它。這是特別奇怪的,因爲目前只有數據庫中的那兩項。]

這是一個錯誤嗎?難道我做錯了什麼?

回答

2

這張票討論此行爲:https://code.djangoproject.com/ticket/9006

只需使用order_by查詢。發生這種情況是因爲如果不指定顯式排序,數據庫引擎可以自由返回任何合適的行。所以我想它只是從它的緩存中選擇一個。

+0

謝謝,非常有幫助! – tufelkinder