我有两个相关的模型:
class Category(models.Model):
pass
class Entry(models.Model):
category = models.ForeignKey(Category, related_name='entries')
is_published = models.BooleanField(default=True)
我需要获取已发布条目的类别。
我最后得到了两个问题:
published = Entry.objects.filter(is_published=True)
categories = Category.objects.filter(entries__in=published)
我可以在一个查询中执行此操作吗?
答案 0 :(得分:3)
使用双下划线在相关对象之间进行查询。
categories = Category.objects.filter(entry__is_published=True)
(注意,你的原始代码实际上只会执行一个查询,但它会有一个子查询,它可能比我的版本中的JOIN效率低。)