以下は、 annotate
を使用してDjangopre3.2で機能する方法です。 (残念ながら、 output_field
を設定するためのわずかなハックも必要です。 、値は使用されていませんが)。
from django.db.models import F、Func、TextFieldcol_a_col_b =Func(F('col_a')、F('col_b')、function ='ROW'、output_type =TextField())col_a_col_b_from =Func (col_a_value、col_b_value、function ='ROW')filtered_queryset =queryset \ .annotate(col_a_col_b =col_a_col_b)\ .filter(col_a_col_b__gt =col_a_col_b_from)\ .order_by('col_a'、'col_b')
Django 3.2以降では、明らかに
エイリアス
を使用できますannotate
の代わりにタプルと呼ばれるものは、実際には行コンストラクター 、つまり
(col_a、col_b)
ROW(col_a、col_b)
と同じです上記は、このチケット の情報に基づいています。