gpt4 book ai didi

django - 如何使用 Django 查询将两个 ManyToMany 字段相交?

转载 作者:行者123 更新时间:2023-12-02 09:47:31 26 4
gpt4 key购买 nike

假设我有以下 Django 模型:

class A(models.Model):
keywords = models.ManyToManyField(Keyword)

class B(models.Model):
keywords = models.ManyToManyField(Keyword)

我有一个 A 对象。我想找到所有 B 对象,其中 B 对象中的某些关键字与 A 对象中的某些关键字相同。

编写此查询的正确方法是什么?

最佳答案

为了保持理智,我将分别用文章和博客替换 A 和 B。它使得解析相关名称变得更加容易。所以,我们有:

class Article(models.Model):
keywords = models.ManyToManyField(Keyword)

class Blog(models.Model):
keywords = models.ManyToManyField(Keyword)

这应该可以在一个查询中工作:

article = Article.objects.all()[0]
Blog.objects.filter(keywords__in=Keyword.objects.filter(articles=article))

Django 会将 Keyword.objects.filter 合并到 Blog.objects.filter 查询中,仅进行一次数据库调用。

关于django - 如何使用 Django 查询将两个 ManyToMany 字段相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129431/

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