Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
Python 按模型的属性(而不是字段)对Django查询集进行排序 一些代码和我的目标_Python_Django Models_Django Templates - Fatal编程技术网

Python 按模型的属性(而不是字段)对Django查询集进行排序 一些代码和我的目标

Python 按模型的属性(而不是字段)对Django查询集进行排序 一些代码和我的目标,python,django-models,django-templates,Python,Django Models,Django Templates,我的(简化)模型: 我的目标:我想按成本属性排序。我尝试了两种方法 通过QuerySet API使用order_ 这产生了以下模板错误: Caught FieldError while rendering: Cannot resolve keyword 'cost' into field. Caught VariableDoesNotExist while rendering: Failed lookup for key [cost] in u'Union Square' 使用dictsor

我的(简化)模型:

我的目标:我想按
成本
属性排序。我尝试了两种方法

通过QuerySet API使用order_ 这产生了以下模板错误:

Caught FieldError while rendering: Cannot resolve keyword 'cost' into field.
Caught VariableDoesNotExist while rendering: Failed lookup for key [cost] in u'Union Square'
使用dictsort模板过滤器 收到以下模板错误:

Caught FieldError while rendering: Cannot resolve keyword 'cost' into field.
Caught VariableDoesNotExist while rendering: Failed lookup for key [cost] in u'Union Square'
所以 我应该怎么做呢?

案例一起使用。。。结束
定义一个新字段,并在此字段上排序

Stops.objects.extra(select={'cost': 'CASE WHEN price=0 THEN 0 '
  'WHEN type=:EXPRESS_STOP THEN price/2 WHEN type=:LOCAL_STOP THEN price*2'},
  order_by=['cost'])

或者将其余部分返回的
QuerySet
转换为一个列表,然后在其上使用
L.sort(key=operator.attrgetter('cost'))

我喜欢你的第二种方法。但是,如果它是相关模型的属性,我将如何按
成本
排序?示例:在
Stop
模型中,我们有
pricing=models。ForeignKey(pricing)
cost
pricing
的属性
key=lambda x:x.pricing.cost
Stops.objects.extra(select={'cost': 'CASE WHEN price=0 THEN 0 '
  'WHEN type=:EXPRESS_STOP THEN price/2 WHEN type=:LOCAL_STOP THEN price*2'},
  order_by=['cost'])