Список всех значений в атрибуте модели 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))