不明な数のクエリセットをリストに連結する方法はありますか?
ここに私のモデルがあります:
class Item(models.Model):
name = models.CharField(max_length=200)
brand = models.ForeignKey(User, related_name='brand')
tags = models.ManyToManyField(Tag, blank=True, null=True)
def __unicode__(self):
return self.name
class Meta:
ordering = ['-id']
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
def __unicode__(self):
return self.name
私が使用しているクエリには、次の 2 種類があります。
items = Item.objects.filter(brands__in=brands)
items = Item.objects.filter(tags__name='80s').filter(tags__name='comedy')
2 番目のタイプのクエリに関しては、ユーザーは検索を保存でき (たとえば、「80 年代のコメディ」)、複数の検索を同時に保存できるため、保存した検索ごとにクエリを作成する必要があります。
私は当初、両方のケースを処理する単一のクエリを試して構築したかったのですが ( Django Combining AND and OR Queries with ManyToMany Field を参照)、これを行う最善の方法はすべてのクエリをリストに結合することだと思います。
私は@akaiholaがここで提案していることを気に入っています.Django ビューで2つ以上のクエリセットを組み合わせるには? しかし、可変数のクエリで itertools.chain を使用する方法がわかりません。
それを達成するための最良の方法を知っている人はいますか?
編集: 言い忘れましたが、私が探しているのは、特定のブランドのアイテム、または必要なタグがすべて付いているアイテムです。