Django 1.9 (और संभवतः 1.8) आप इस का उपयोग कर सकते के लिए:
from django.db import connections, models
from django.db.models.sql.compiler import SQLCompiler
class NullsLastSQLCompiler(SQLCompiler):
def get_order_by(self):
result = super().get_order_by()
if result and self.connection.vendor == 'postgresql':
return [(expr, (sql + ' NULLS LAST', params, is_ref))
for (expr, (sql, params, is_ref)) in result]
return result
class NullsLastQuery(models.sql.query.Query):
"""Use a custom compiler to inject 'NULLS LAST' (for PostgreSQL)."""
def get_compiler(self, using=None, connection=None):
if using is None and connection is None:
raise ValueError("Need either using or connection")
if using:
connection = connections[using]
return NullsLastSQLCompiler(self, connection, using)
class NullsLastQuerySet(models.QuerySet):
def __init__(self, model=None, query=None, using=None, hints=None):
super().__init__(model, query, using, hints)
self.query = query or NullsLastQuery(self.model)
और फिर अपने मॉडल (ओं) पर:
objects = NullsLastQuerySet.as_manager()
यह टिम से https://stackoverflow.com/a/17077587/15690 में उत्तर पर आधारित है।
Django को इसके लिए समर्थन जोड़ने का टिकट फिर से खोला गया है: https://code.djangoproject.com/ticket/13312।
धन्यवाद। यह वास्तव में सही समाधान नहीं है लेकिन थोड़े काम करता है – GabiMe
आपका स्वागत है। मुझे नहीं लगता कि इसके लिए एक सही समाधान है, या कम से कम एक जो डीजेगो द्वारा सीधे विचार किया गया है, [यह Google समूह पोस्ट] दिया गया है (https://groups.google.com/d/msg/django-users/sxbpqmkRyCU/ QUYjX3niCOEJ) मैल्कम ट्रेडिनिक द्वारा। – Mariano