2017-02-24 3 views
0

は、ケースとhttps://docs.djangoproject.com/en/dev/ref/models/conditional-expressions/ 条件式を参照してください。オブジェクトのデフォルト値でDjangoの条件式を作成するにはどうしたらいいですか?

o = Object.annotate(
    custom_price=Case(
        When(price=1, then=Value(2)), 
        default=0, 
        output_field=DecimalField(), 
       ) 
      ) 

どのように 'default' - オブジェクトの現在の値を使用するか? 0が

のような何かをしたい:これを実行するために使用される

if price =1: 
    custom_price = 2 
else: 
    custom_price = Object.price 

答えて

0

F は、今ではのconstとしてのみwrited。

from django.db.models import Case, F, Value, When, DecimalField 
    o = Object.objects.annotate(custom_price=Case(
       When(price=1, then=Value(2)), 
       default=F('price'), 
       output_field=DecimalField(), 
      ) 
     ) 
:だから、あなたのコードは次のようになります。
関連する問題