为了账号安全,请及时绑定邮箱和手机立即绑定

Django,将 QuerySet 列表合并为 1 个 Queryset

Django,将 QuerySet 列表合并为 1 个 Queryset

偶然的你 2023-07-18 16:47:50
所以我正在 Django 中构建一个服装比较器。我创建了多个复选框,以便人们可以将产品过滤为例如:夹克和裤子。为了获取 Postgresql 数据库中的所有产品,我制作了一个字典,其中键是类别,值是链接到该类别的单词。如果找到匹配项,产品将附加到包含我要显示的所有产品的列表中。问题是我在该列表中有多个查询集,但无法将其输出到 HTML。有没有一种方法可以将列表中的所有 QuerySet 合并为一个 QuerySet?代码:mylist = request.POST.getlist('checkbox')    categorie_list = ['jackets', 'sweaters', 't-shirts', 'polo-shirts', 'trousers', 'shorts', 'hats', 'bags']    cat_dict = {'jackets': ['zip-up', 'jacket', 'overshirt', 'parka'], 'sweaters': ['hoodie', 'sweatshirt', 'jumper']}    list1 = []    for item in mylist:        if item in categorie_list:            if item in cat_dict.keys():                print(item)                for value in cat_dict[item]:                    print(value)                    data = models.Product.objects.filter(name__regex=value)                    list1.append(data)            else:                pass        else:            pass    print(list1)list1 看起来像这样:[<QuerySet [<Product: >, <Product: >]>, <QuerySet [<Product: >, <Product: >]>, <QuerySet [<Product: >, <Product: >]>]模型看起来像这样:class Product(models.Model):    brand = models.TextField()    name = models.CharField(max_length=200)    color = models.TextField(null=True)    final_price = models.TextField()    initial_price = models.TextField()    sort_price = models.TextField()    product_link = models.TextField()    image_link = models.TextField()    discount = models.TextField()    company_pic = models.TextField()    def __str__(self):        return self.name
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

请尝试这个。这里我们将值过滤为列表数据类型。


data = list(models.Product.objects.filter(name__regex=value))

list1.append(data)

请添加您的型号以获取更多信息。


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信