नीचे एक तरीका है जो annotate
. का उपयोग करके Django प्री 3.2 में काम करता है (जिसे दुर्भाग्य से output_field
. सेट करने की थोड़ी सी हैक की भी आवश्यकता होती है , भले ही मान का उपयोग न किया गया हो).
from django.db.models import F, Func, TextField
col_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+ में आप स्पष्ट रूप से alias
. का उपयोग कर सकते हैं annotate
. के बजाय
यह काम करता है क्योंकि जिसे टपल कहा जाता है, वास्तव में पंक्ति निर्माता
, यानी (col_a, col_b)
ROW(col_a, col_b)
. जैसा ही है
उपरोक्त इस टिकट में दी गई जानकारी पर आधारित है