Django:Values\u list从选项字段返回id而不是name
我有两种型号Django:Values\u list从选项字段返回id而不是name,django,django-models,django-orm,Django,Django Models,Django Orm,我有两种型号 class Model1: my_Choices = ((1, val1), (2, val2)) field1 = choice_field(my_Choices) field2 = charfield 另一个模型有很多领域 class Model2: field1 = ManytoMany(Model1, related_name='rel_model2') field2 = Charfield 现在我有一个Model2的对象列表(que
class Model1:
my_Choices = ((1, val1), (2, val2))
field1 = choice_field(my_Choices)
field2 = charfield
另一个模型有很多领域
class Model2:
field1 = ManytoMany(Model1, related_name='rel_model2')
field2 = Charfield
现在我有一个Model2的对象列表(queryset)(或者为了简单起见,假设我有一个第二个model的对象)
现在我做反向过滤
Model2_obj.rel_model2.all()
或者(就我而言)
这将返回Model1中可用选项的ID列表(对吗?)
e、 g.[1L,2L]
相反,如果我想要名称/值(我指的是选项中的值列表)
例如
['val1','val2']
我可以通过迭代id list和choice\u list来实现这一点,但是我们可以通过单个ORM查询/Pythonic方式/高效方式来实现吗?如果您选择使用values\u list()函数,那么您必须自己进行查找/转换。(这是因为Django在数据库中存储的是数字,而不是字符串,values_list()表示“获取数据库中的内容”。)执行查找并不困难——您可以创建一个命令,如
my_choices_dict = dict(my_choices)
用这个
或者,如果获取完整对象,可以使用内置于模型类中的get_field1_display()方法。查看并搜索“get\u FOO\u display”如果选择使用values\u list()函数,则必须自己进行查找/转换。(这是因为Django在数据库中存储的是数字,而不是字符串,values_list()表示“获取数据库中的内容”。)执行查找并不困难——您可以创建一个命令,如
my_choices_dict = dict(my_choices)
用这个
或者,如果获取完整对象,可以使用内置于模型类中的get_field1_display()方法。请参阅并搜索“get_FOO_display”