简体   繁体   English

从多对多模型获取值列表

[英]Get value list from ManytoMany model

I would like to retrieve a list of values on the format ['BMW', 'Mercedes', 'Audi'] (these are the three selected out from a list of 50+ different car makes made in a multiple select form field/list.我想检索格式为['BMW', 'Mercedes', 'Audi']的值列表(这些是从 50 多种不同汽车制造商的列表中选出的三个,该列表是在多选表单字段/列表中制作的.

Values exist in a ManyToMany:值存在于多对多中:

class CarMakeModel(models.Model):
    Make = models.CharField(max_length=30)

class Product(models.Model):
    selection = models.ManyToManyField(CarMakeModel)

Now I would like to retrieve the selection made, eg in the shell:现在我想检索所做的选择,例如在 shell 中:

select = product.models.Product.objects.latest('id').selection.values('Make')

This will return:这将返回:

<QuerySet [{'Make': 'BMW'}, {'Make': 'Mercedes'}, 'Make': 'Audi'}]

How do I get this QuerySet reply into this format ['BMW', 'Mercedes', 'Audi'] ?我如何将此 QuerySet 回复转换为这种格式['BMW', 'Mercedes', 'Audi']

I have tried list(select) and tuple(select) which returns:我试过list(select)tuple(select)返回:

[{'Make': 'BMW'}, {'Make': 'Mercedes'}, 'Make': 'Audi'}]

and

({'Make': 'BMW'}, {'Make': 'Mercedes'}, 'Make': 'Audi'})

but already now it feels I have taken too many steps for a seemingly simple request.但现在已经感觉我为一个看似简单的请求采取了太多步骤。 My question is how do I more correct achieve my aim?我的问题是如何更正确地实现我的目标?

您可以改用values_list方法:

select = product.models.Product.objects.latest('id').selection.values_list('Make', flat=True)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM