2017-08-22 11 views
0

私は外部キーに関連する2つのモデルを持っています。少なくとも1つのForeignKeyオブジェクト属性を指定してクエリーセットを取得する方法は?

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) 

はそれを行う簡単な方法はありますか?

答えて

3

実は、あなたの例では、少なくとも一つの承認写真と関連しているギャラリーのオブジェクトを返します

Gallery.objects.filter(photos__approved=True) 
を求めまさにありません。

が写真のすべてが承認されギャラリーを返すには、あなたは正しい、

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

+0

ああを記述する必要があります!私の悪い!私はこの問題がここにあることをほとんど確信していた。それは実際に私のコードの他の部分にありました。とにかくありがとうございました ! – Dibidalidomba

0

私はあなたを理解していれば:

Gallery.objects.filter(photos__approved=True).values('gallery__pk').distinct() 
#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
関連する問題