我有以下型号:
class Project(models.Model):
name = models.CharField(max_length=100)
isprivate = models.BooleanField(default=False)
class View(models.Model):
name = models.CharField(max_length=100)
isprivate = models.BooleanField(default=False)
project = models.ForeignKey('Project', related_name='views')
我想得到一个QuerySet,其中包含非私有的所有项目,并且至少有一个非私有的View。例如,类似于:
Project.objects.filter(isprivate=False, views__isprivate=False)
有什么建议吗?
感谢。
答案 0 :(得分:3)
试试这个:
Project.objects.filter(isprivate=False)
.annotate(private_views=Count('views__isprivate'))
.filter(private_views__gte=1)
在documentation on aggregation了解Count()
的更多信息。