私の(簡略化された)モデルは次のようなものです:
class Story(models.Model):
wikiedit = models.BooleanField(default=False)
writers = models.ManyToManyField(User,null=True,blank=True)
class Writer(models.Model):
user = models.OneToOneField(User)
今、私は満たすすべてのストーリーを含むクエリセットを構築しようとしています:wikiedit = True or user in writers
したがって、ビュー内で次の 2 つのクエリを作成します。
wikistories = Story.objects.filter(wikiedit=True)
writerstories = request.user.objects.story_set.filter
しかし、可能であれば、これを 1 つのデータベース ヒットだけで作成したいと考えています。そのほうが効率がいいと思います。in 演算子がこの m2m 関係で次の意味でサポートされているかどうかはわかりません。
Story.objects.filter(writers__contains=request.user) #but this is a TypeError
2 つのクエリセットを作成してリストに結合する方が効率的かもしれませんが、1 つにまとめたいと考えています。
手がかりはありますか?どうも!