Django:返回values_list的dicts列表?

mpe*_*pen 9 django django-models django-queryset

我有这个问题:

cities = ShippingPrice.objects.filter(city1__name__icontains=request.REQUEST.get('city','')).values_list('city1__id','city1__name').order_by('city1__name').distinct()
Run Code Online (Sandbox Code Playgroud)

返回列表列表.这会很好,而不是.values_list('city1__id','city1__name')我写的:

.values_list({'id':'city1__id','name':'city1__name'})
Run Code Online (Sandbox Code Playgroud)

它会让我回到一系列的词汇,比如

[{'id':4135,'name':'Seattle'},{'id':4154,'name':'Vancouver'}]
Run Code Online (Sandbox Code Playgroud)

有没有现成的方法呢?


我正在浏览Django源代码,但我不知道如何覆盖它:

def values_list(self, *fields, **kwargs):
    flat = kwargs.pop('flat', False)
    if kwargs:
        raise TypeError('Unexpected keyword arguments to values_list: %s'
                % (kwargs.keys(),))
    if flat and len(fields) > 1:
        raise TypeError("'flat' is not valid when values_list is called with more than one field.")
    return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,
            _fields=fields)
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 19

为什么不values()首先使用?

  • 嗯?然后我必须创建另一个dict映射`{'city1__name':'name'}`并做一些疯狂的逻辑来转换它......这看起来比使用`values_list`并传递它更加冗长.[dict(zip(键,值)))value_list中的值]` (2认同)