Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:Values\u list从选项字段返回id而不是name_Django_Django Models_Django Orm - Fatal编程技术网

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”