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'])