いくつかの基準を満たすエントリを含むブログ (以下のモデルの説明を参照) を取得しようとしています:
Blog.objects.filter(entries__title__contains='entry')
結果は次のとおりです。
[<Blog: blog1>, <Blog: blog1>]
関連モデルのオブジェクトをフィルタリングするために JOIN が実行されるため、同じブログ オブジェクトが 2 回取得されます。一意のオブジェクトのみをフィルタリングするための正しい構文は何ですか?
データ・モデル:
class Blog(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Entry(models.Model):
title = models.CharField(max_length=100)
blog = models.ForeignKey(Blog, related_name='entries')
def __unicode__(self):
return self.title
サンプルデータ:
b1 = Blog.objects.create(name='blog1')
e1 = Entry.objects.create(title='entry 1', blog=b1)
e1 = Entry.objects.create(title='entry 2', blog=b1)