【问题标题】:Django specific sql queryDjango 特定的 sql 查询
【发布时间】:2009-12-28 18:03:32
【问题描述】:

如何在 django 中执行这样的查询:

SELECT * FROM keywords_keyword WHERE id not in (SELECT keyword_id FROM sites_pagekeyword)

在最新的 SVN 版本中我们可以使用:

keywords = Keyword.objects.raw('SELECT * FROM keywords_keyword WHERE id not in (SELECT keyword_id FROM sites_pagekeyword)')

但是 RawQuerySet 不支持 filter(), count(), indexing 和其他东西。还有其他方法吗?

【问题讨论】:

    标签: python sql django django-models


    【解决方案1】:

    Keyword.objects.exclude(id__in=PageKeyword.objects.all()

    Keyword.objects.exclude(id__in=PageKeyword.objects.values('keyword_id'))
    

    供将来参考,exclude is documented here


    编辑:是的,你是对的;我更正了我的答案。见上文。


    编辑:更具可读性:

    Keyword.objects.exclude(pagekeyword__in=PageKeyword.objects.all())
    

    【讨论】:

      【解决方案2】:

      我已经测试了您的代码,但它的工作方式与预期不符, 这是我的任务的正确解决方案:

      Keyword.objects.exclude(id__in=PageKeyword.objects.values('keyword_id'))
      

      【讨论】:

        猜你喜欢
        • 2020-04-16
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多