अतिरिक्त ()
फ़ंक्शन को दस्तावेज़
:
यहां बताया गया है कि आप कस्टम एनोटेशन
. का उपयोग करके वही काम कैसे कर सकते हैं समारोह:
from django.db import models
class ArrayLength(models.Func):
function = 'CARDINALITY'
MyModel.objects.all().annotate(field_len=ArrayLength('field')).order_by('field_len')
ध्यान दें कि cardinality()
कोड>
फ़ंक्शन PostgreSQL 9.4 या बाद के संस्करण में उपलब्ध है। यदि आप पुराने संस्करण का उपयोग कर रहे हैं, तो आपको array_length()
:
MyModel.objects.all().annotate(field_len=Func(F('field'), 1, function='array_length')).order_by('field_len')
इस दूसरी क्वेरी के साथ एक चेतावनी यह है कि एक खाली सरणी को सभी गैर-रिक्त लोगों के सामने क्रमबद्ध किया जाएगा। इसे NULL
. को जोड़कर हल किया जा सकता है array_length
. से मान से 0.