Django में, अगर मेरे पास मॉडल श्रेणी है, उदा।Django में, क्या आप क्वेरीसेट में कोई विधि जोड़ सकते हैं?
from django.db import models
class Transaction(models.Model):
...
तो अगर मैं मॉडल को विधियों को जोड़ना चाहता हूं, उदाहरण के लिए उदा। उचित जटिल फिल्टर, मैं एक कस्टम मॉडल प्रबंधक जोड़ सकता हूं, उदा।
class TransactionManager(models.Manager):
def reasonably_complex_filter(self):
return self.get_query_set().filter(...)
class Transaction(models.Model):
objects = TransactionManager()
और फिर मैं कर सकते हैं:
>>> Transaction.objects.reasonably_complex_filter()
वहाँ किसी भी तरह से मुझे लगता है कि एक प्रश्न मॉडल से सेट के अंत तक श्रृंखलित किया जा सकता है एक कस्टम विधि जोड़ सकते हैं है?
अर्थात इस तरह से है कि मैं ऐसा कर सकते हैं में कस्टम विधि जोड़ें:
>>> Transaction.objects.filter(...).reasonably_complex_filter()
राइट, गॉचा। क्या आप जानते हैं कि उस ब्लॉग पोस्ट में सुझाई गई विधि विश्वसनीय तरीके से काम करती है या नहीं? टिप्पणियों से पता चलता है कि '__getattr__' दृष्टिकोण में कुछ समस्याएं हैं। –
मैंने इस कोड को खुद अभ्यास में नहीं रखा है, लेकिन मैंने इसी तरह से पहले डीजेगो परियोजनाओं में विश्वसनीय रूप से '__getattr__' का उपयोग किया है। –
आलेख काफी पुराना है, लेकिन बिंदु यह है कि आपको कुछ तरीकों से 'क्वेरीजेट' ऑब्जेक्ट में अपनी विधियों को संलग्न करने की आवश्यकता है। –