这是一个创建于 3676 天前的主题,其中的信息可能已经有所发展或是发生改变。
场景:
Class A:
pass
class B:
f1 = models.ManyToManyField('A',related_name='b')
f2 = models.BooleanField(default=False)
表里面有一个A instance a, 两个B instance 均有f1对应于a
查询:
A.objects.filter(b__f2 = 0)
结果返回了queryset [a,a],两个a instance。
这是怎么回事啊?正确的写法是什么呢?
3 条回复 • 2014-06-02 19:34:32 +08:00
![wenbinwu](https://cdn.v2ex.com/avatar/8a7c/f651/7617_normal.png?m=1440064762) |
|
1
wenbinwu 2014-06-02 18:00:44 +08:00 1
print A.objects.filter(b__f2 = 0).query 看一下SQL就明白了:)
|
![ericFork](https://cdn.v2ex.com/avatar/cf78/7e7b/29383_normal.png?m=1352182845) |
|
2
ericFork 2014-06-02 19:20:13 +08:00 1
LS+1,workaround 是加上 .distinct()
|
![clker](https://cdn.v2ex.com/gravatar/66f488aacfc9e4bb6b009a7dcc39ea87?s=48&d=retro) |
|
3
clker 2014-06-02 19:34:32 +08:00
|