我有以下Django模型:
class Make: name = models.CharField(max_length=200) class MakeContent: make = models.ForeignKey(Make) published = models.BooleanField()
我想知道是否有可能(无需直接编写SQL)生成一个查询集,其中包含所有Makes和每个人的相关MakeContents where published = True。
MakeContents where published = True
Django不支持select_related()反向外键查找的方法,因此,最好的方法是在不离开Python的情况下进行两个数据库查询。第一个是获取Makes包含MakeContentswhere的所有内容published = True,第二个是获取所有MakeContentswhere的内容published = True。然后,你必须遍历并按需要排列数据。
select_related()
Makes
MakeContentswhere
published = True
是的,我想你想要
make = Make.objects.get(pk=1) make.make_content_set.filter(published=True)
或许
make_ids = MakeContent.objects.filter(published=True).values_list('make_id', flat=True) makes = Make.objects.filter(id__in=make_ids)