如何获取至少指定了一个ForeignKey对象属性的queryset?

时间:2017-08-22 08:55:14

标签: python django django-models django-queryset

我有两个与外键相关的模型。

class Gallery(models.Model):
    # some attributes

class GalleryPhoto(models.Model):
    gallery = models.ForeignKey(Gallery, related_name='photos')
    approved = models.BooleanField('approved', default=False)

我希望获得与至少一张已批准的照片相关的Gallery个对象的查询集。我知道如何获得所有照片都被批准的对象,但这不是我想要实现的目标:

Gallery.objects.filter(photos__approved=True)

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:3)

实际上,您的示例完全符合您的要求

Gallery.objects.filter(photos__approved=True)

返回与至少一张已批准的照片相关的图库对象。

要返回批准所有照片的画廊,您必须写

Gallery.objects.filter(photos__approved=True).exclude(photos__approved=False)