初心者の質問...
モデル:
Item(model.Models):
...
attributes = models.ManyToManyField('Attributes', null=True)
...
Attributes(models.Models):
title = models.CharField(max_length=100, unique = True)
value = models.TextField()
...
[attObj1, attobj2, attObj3, attObjN]
テーブルをフィルタリングするときに使用する属性オブジェクトのリストがありItem
ます。次のクエリが機能します。
items = Item.objects.filter(attributes = attObj1 and attObj2 and attObj3)
問題attObj1 and attObj2 and attObj3... and attObjN
は、リスト内の属性の量が不明であるため、クエリ(つまり、:)を動的に作成する必要が
運が悪かった次の複雑なクエリセットを使用してみました(ソース)。空のリストを返しました。
attList = [attObj1, attObj2, attObj3]
query = Q(attributes = attList.pop(0))
for att in attList:
query = query & Q(attributes=att)
items = Item.objects.filter(query)
これは可能ですか?