V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
clker
V2EX  ›  Django

请教一个 django 的 query 问题

  •  
  •   clker ·
    clker · 2014-06-02 17:53:48 +08:00 · 2986 次点击
    这是一个创建于 3845 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景:
    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
        1
    wenbinwu  
       2014-06-02 18:00:44 +08:00   ❤️ 1
    print A.objects.filter(b__f2 = 0).query
    看一下SQL就明白了:)
    ericFork
        2
    ericFork  
       2014-06-02 19:20:13 +08:00   ❤️ 1
    LS+1,workaround 是加上 .distinct()
    clker
        3
    clker  
    OP
       2014-06-02 19:34:32 +08:00
    @wenbinwu
    @ericFork

    感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   825 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:07 · PVG 06:07 · LAX 14:07 · JFK 17:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.