Django 模型属性中所有值的列表

问题描述 投票:0回答:1

我正在创建一个电子商务网站,我希望允许用户按各种产品规格过滤搜索结果。

我想在我的 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)

到目前为止,我已经尝试使用它,其中产品是应用“iPhone”搜索后我的产品实体的查询集:

products.values_list('model')

这个问题是它返回一个 QuerySet,但我想要一个列表。

我希望有一句我不知道的俏皮话。

django django-models django-queryset
1个回答
0
投票

将其转换为列表。仅查询一个属性时,您还可以使用

flat=True
检查文档):

list(products.values_list('model', flat=True))
© www.soinside.com 2019 - 2024. All rights reserved.