[更新:软件版本Python 2.7.2,Django 1.3.1]
任何人都可以解释这个控制台代码吗?
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()也可以修复它。这特别奇怪,因为目前数据库中只有这两项。]
这是一个错误吗?我做错了吗?
答案 0 :(得分:2)
此故障单讨论了此行为:https://code.djangoproject.com/ticket/9006
只需使用order_by
查询即可。发生这种情况是因为如果您未指定显式排序,则数据库引擎可以自由返回任何合适的行。所以我猜它只是从缓存中选择一个。