gpt4 book ai didi

django - 如何选择多对多关系中未引用的所有对象

转载 作者:行者123 更新时间:2023-12-01 11:09:47 24 4
gpt4 key购买 nike

我有几个这样设置的 Django 模型:

class Group(models.model):
name = models.CharField(max_length=50, unique=True)

class Section(models.Model):
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(help_text='Auto generated')
groups = models.ManyToManyField(Group, blank=True)

在我的代码的一部分中,我需要获取组字段为空的所有 Section 对象,我可以使用原始 SQL 来表达它,但如果可能的话我真的很想使用 ORM 代码。在 SQL 中编写查询的一种方法是:

select * from section where id not in (select section_id from section_groups);

是否可以在 ORM 查询中表达此需求?

最佳答案

尽管生成的 SQL 与您希望的示例略有不同:

Section.objects.filter(groups__isnull=True)

会完成工作。

这会生成以下内容(添加了格式)

SELECT
"app_section"."id",
"app_section"."name",
"app_section"."slug"
FROM "app_section"
LEFT OUTER JOIN "app_section_groups" ON
("app_section"."id" = "app_section_groups"."section_id")
WHERE "app_section_groups"."group_id" IS NULL

关于django - 如何选择多对多关系中未引用的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1319397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com