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