如何在Django中获取模型属性值并转为列表用于电商API筛选
解决方案
要把values_list返回的QuerySet转为普通列表,只需添加flat=True并包裹在list()中,一行代码即可实现:
model_options = list(products.values_list('model', flat=True).distinct())
flat=True:让QuerySet返回单个值的序列而非元组序列distinct():自动去重,避免重复的属性值list():将QuerySet转换为Python标准列表
如果要一次性生成包含所有需要属性的meta字典,同样可以用一行字典推导式完成:
meta = {field: list(products.values_list(field, flat=True).distinct()) for field in ['model', 'manufacturer', 'seller']}
执行后会生成符合API需求的结构:
{ 'model': ['iPhone 15', 'iPhone 14', ...], 'manufacturer': ['Apple'], 'seller': ['官方旗舰店', '授权经销商', ...] }
内容的提问来源于stack exchange,提问作者jo_ham
相关产品推荐
相关产品推荐

