दूसरा विकल्प यह है कि यदि आपके पास एक फ़िल्टर है जिसे आप हमेशा लागू करना चाहते हैं, तो सवाल में मॉडल पर एक कस्टम प्रबंधक जोड़ने के लिए जो हमेशा फ़िल्टर को लागू किए गए परिणामों पर लागू करता है।
इसका एक अच्छा उदाहरण एक Event
मॉडल है, जहां 90% प्रश्नों के लिए आप जिस मॉडल पर कुछ करना चाहते हैं Event.objects.filter(date__gte=now)
, जैसे आप चाहते हैं , यानी आप आम तौर पर Events
उस में रुचि रखते हैं जो आगामी हैं। ऐसा लगेगा:
class EventManager(models.Manager):
def get_query_set(self):
now = datetime.now()
return super(EventManager,self).get_query_set().filter(date__gte=now)
और मॉडल में:
class Event(models.Model):
...
objects = EventManager()
लेकिन फिर से, यह Event
मॉडल पर किए गए सभी डिफ़ॉल्ट प्रश्नों के खिलाफ एक ही फ़िल्टर लागू करता है और इसलिए ऊपर वर्णित कुछ तकनीकों के समान लचीला नहीं है।