假设我有以下Django模型:
class A(models.Model):
keywords = models.ManyToManyField(Keyword)
class B(models.Model):
keywords = models.ManyToManyField(Keyword)
Run Code Online (Sandbox Code Playgroud)
我有一个A对象.我想找到所有B对象,其中B对象中的某些关键字与A对象中的某个关键字相同.
编写此查询的正确方法是什么?
为了我的理智,我分别用文章和博客取代A和B. 它使解析相关名称变得容易得多.所以,我们有:
class Article(models.Model):
keywords = models.ManyToManyField(Keyword)
class Blog(models.Model):
keywords = models.ManyToManyField(Keyword)
Run Code Online (Sandbox Code Playgroud)
这应该在一个查询中起作用:
article = Article.objects.all()[0]
Blog.objects.filter(keywords__in=Keyword.objects.filter(articles=article))
Run Code Online (Sandbox Code Playgroud)
Django将结合Keyword.objects.filter到Blog.objects.filter查询中,只进行一次数据库调用.
| 归档时间: |
|
| 查看次数: |
2095 次 |
| 最近记录: |