3

Django クエリを使用してモデルの 2 つの異なる Decimal フィールドの大きい方を取得するにはどうすればよいですか?

たとえば、income_actual および Income_projected というフィールドを持つモデル Month がある場合、どのようにすればより大きな値を返すことができますか?

以前は MySQL GREATEST() 関数を使用して実行していましたが、Django で実行する方法がわかりません。

4

3 に答える 3

3

余分な方法の使用を検討しましたか?

Month.objects.extra(select={'max_income': 'greatest(income_actual, income_projected)'})

編集:

生の SQLを書かずに ORM を介してそれを使用することはできません。Python マジックを使用することもできますが、次のようにします。

sum(month['max_income'] for month in Month.objects.extra(select={'max_income': 'greatest(income_actual, income_projected)'}).values('max_income'))
于 2013-01-01T19:14:46.010 に答える
0

厳密に SQL を使用したい場合は、@drewman がすでにバージョンを提供しています。少し違うやり方をして、正しいバージョンを動的に計算するプロパティをモデルに追加します。

class model(models.Model):
    ....

    @property
    def income(self):
        return max(self.income_actual, self.income_real)
于 2013-01-02T02:43:35.417 に答える