Django, объединяющий список наборов запросов в 1 набор запросов

#python #html #django #postgresql

#python #HTML #django #postgresql

Вопрос:

Итак, я создаю средство сравнения одежды в Django. Я создал несколько флажков, чтобы люди могли фильтровать продукты, например: куртки и брюки. Чтобы получить все продукты в моей базе данных Postgresql, я создал словарь, в котором ключами являются категории, а значениями — слова, связанные с категорией. Если найдено совпадение, продукты добавляются к списку, который содержит все продукты, которые я хочу показать. Проблема в том, что у меня есть несколько наборов запросов в этом списке, и я не могу вывести его в свой HTML. Есть ли способ объединить все наборы запросов в списке в один набор запросов? Код:

 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)
  

список 1 выглядит примерно так:

 [<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:

Пожалуйста, попробуйте это. Здесь мы фильтруем значения как тип данных списка.

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

пожалуйста, добавьте свою модель для получения дополнительной информации.

Комментарии:

1. Ах, спасибо, это работает, но теперь у меня проблемы с выводом его в HTML. Данные обычно выглядят примерно так: <Набор запросов [<Продукт>, <Product> etc]>. И теперь это выглядит так: [[<Продукт>, <Product>]]