Список всех значений в атрибуте модели Django

Я создаю сайт электронной коммерции и хочу позволить пользователю фильтровать результаты поиска по различным характеристикам товаров.

Я хочу возвращать в API мета-словарь, содержащий все значения, которые имеет каждый атрибут товара.

Например, если пользователь ищет "iPhone", ответ должен выглядеть следующим образом:

{
    'data': {
        ...
    },
    'meta':{
        'options':{
            'model': ['iPhone 12', 'iPhone 13', 'iPhone 14'],
            'manufacturer': ['Apple'],
            ...
        }
    }
}

Вот моя модель для справки:

class Product(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255, null=False, blank=False)
    description = models.TextField(max_length=2048, null=False, blank=True)
    price = models.FloatField(null=False, blank=False, default=0)
    model = models.CharField(max_length=255, null=False)
    manufacturer = models.CharField(max_length=255, null=False)
    seller = models.CharField(max_length=255, null=False)

До сих пор я пробовал использовать следующее, где products - это мой QuerySet сущностей Product после применения поиска 'iPhone':

products.values_list('model')

Проблема в том, что он возвращает QuerySet, а мне нужен список.

Я надеялся, что есть одна строчка, о которой я не знаю.

Преобразуйте его в список. Вы также можете использовать flat=True при запросе только одного атрибута ( проверьте документацию):

list(products.values_list('model', flat=True))
Вернуться на верх