2016-10-06 14 views
1

アノテーションクエリセットに比較演算を追加して、特定のフィールドの値を計算したいと考えています。どうやってやるの? これは、実行エラー上記の私のクエリセットの私の注釈クエリセットDjango:アノテーションクエリセットに比較条件を追加する方法

sale_item_list = OrderItem.objects.filter(order_id=order.id) \ 
       .values('item__name') \ 
       .annotate(price=F('price')) \ 
       .annotate(exchange_rate=F('exchange_rate')) \ 
       .annotate(quantity=F('quantity') \ 
.annotate(amount=Case(
         When(F('quantity') < F('inventory'), then=Sum(F('quantity') * F('price'))), 
         When(F('quantity') > F('inventory'), then=Sum(F('inventory') * F('price'))), 
         output_field=IntegerField())) 

条件式です。私はそれを修正するのを助けてください?

答えて

1

は、フィールド検索__gt__ltよりも小さいと大きなを使用してみてください:

When(quantity__lt=inventory, then=Sum(F('quantity') * F('price'))), 
When(quantity__gt=inventory, then=Sum(F('inventory') * F('price'))), 

https://docs.djangoproject.com/el/1.10/ref/models/querysets/#gt

を参照してください。
関連する問題