चूंकि Django 1.8 order_by()
न केवल फ़ील्ड नामों को स्वीकार करता है बल्कि क्वेरी एक्सप्रेशन ।
एक अन्य उत्तर में मैंने एक उदाहरण दिया कि आप कॉलम के लिए डिफ़ॉल्ट संयोजन को कैसे ओवरराइड कर सकते हैं। यहां उपयोगी क्वेरी एक्सप्रेशन है Func() , जिसे आप सीधे उपवर्ग या उपयोग कर सकते हैं:
nimi_et = Func(
'nimi',
function='et_EE',
template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(nimi_et.asc())
फिर भी, ध्यान दें कि परिणामी SQL अधिक पसंद किया जाएगा:
SELECT nimi FROM test ORDER BY nimi COLLATE "et_EE" ASC;
यानी, ORDER BY
. में संयोजन को ओवरराइड किया गया है खंड के बजाय SELECT
खंड। हालांकि, अगर आपको इसे WHERE
. में उपयोग करने की आवश्यकता है खंड, आप उपयोग कर सकते हैं Func()
annotate()
में ।