我想使用注释进行过滤。
这是我的代码:
class Blog(models.Model):
name = models.CharField(max_length=100)
class Reader(models.Model):
name = models.CharField(max_length=50)
blog= models.ForeignKey(Blog)
type = models.ForeignKey(ReaderType)
class ReaderType(models.Model):
name = models.CharField(max_length=50)
我希望得到至少有2个类型为"male"
的Reader的所有博客。
我有这个代码来获得至少有2个读者的博客:
Blog.objects.annotate(reader_count=Count(reader)).filter(reader_count__gte=2)
如何添加仅过滤至少有2位读者的博客type="male"
答案 0 :(得分:2)
您可以直接在查询中过滤阅读器类型:
posts_with_multiple_readers = (
Blog.objects.filter(reader__type__name='male')
.annotate(reader_count=Count('reader'))
.filter(reader_count__gte=2)
)