有没有办法将未知数量的查询集连接到一个列表中?
这是我的模型:
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
我正在处理两种类型的查询:
items = Item.objects.filter(brands__in=brands)
items = Item.objects.filter(tags__name='80s').filter(tags__name='comedy')
对于第二种查询,用户可以保存搜索(例如“80年代喜剧”),并且可以同时保存多个搜索,所以我需要为他们保存的每个搜索创建一个查询。
我最初想尝试构建一个可以处理这两种情况的单个查询(请参阅Django Combining AND and OR Queries with ManyToMany Field),但我现在认为最好的方法是将所有查询组合到一个列表中。
我喜欢@akaihola 在这里建议的内容: 如何在 Django 视图中组合 2 个或更多查询集?但我不知道如何将 itertools.chain 与可变数量的查询一起使用。
有谁知道实现这一目标的最佳方法?
编辑:忘了提,我正在寻找的是具有特定品牌或具有所有必需标签的物品。