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

所以我正在 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


偶然的你
浏览 155回答 1
1回答

斯蒂芬大帝

请尝试这个。这里我们将值过滤为列表数据类型。data = list(models.Product.objects.filter(name__regex=value))list1.append(data)请添加您的型号以获取更多信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python