1
我有一个表table_object_price
。字段:field_sale_currency_value
是货币的名称,field_sale_whole_value
是价格的名称。django 1.4:我在查询集额外的错误
class Object(Node):
id = models.OneToOneField('Nod', parent_link=True, db_column='id')
name = models.TextField(blank=True, null=True)
field_sale_currency_value = models.TextField(blank=True, null=True)
field_sale_whole_value = MIntegerField(blank=True, null=True)
这SQL代码使得排序:
SELECT *,
CASE field_sale_currency_value
when 'RUR' then field_sale_whole_value/40
when 'USD' then field_sale_whole_value
when 'EUR' then field_sale_whole_value/0.7423
field_sale_currency_value FROM welhome.welhome_content_type_object ORDER BY cost_usd ;
但我需要使用Django额外的,因为我的功能得到查询集:
def sort_queryset(queryset):
queryset = queryset.extra(select={'cost_usd':'(case field_sale_currency_value when "RUR" then field_sale_whole_value/40 when "USD" then field_sale_whole_value when "EUR" then field_sale_whole_value/0.7423 end)'}, order_by=["cost_usd"])
return queryset
而且这是行不通的。
Error Cannot resolve keyword 'cost_usd' into field
谢谢你,但它不工作。无法将关键字'cost_usd'解析为字段 – voice 2014-10-19 13:06:37
@voice确保您从第一个“extra()”调用中移除了'order_by'调用。 – 2014-10-19 13:08:25
我从pycharm中拷贝了这个:queryset = queryset.extra(select = {'cost_usd':'(case“field”)当field为“field”时field_sale_currency_value为field_sale_whole_value/40当“USD”时field_sale_whole_value为field_sale_whole_value为“EUR”时field_sale_whole_value/0.7423结束)'} ) queryset = queryset.extra(order_by = ['cost_usd']) – voice 2014-10-19 13:12:36