2010-09-13 13 views
5

इसे थोड़ी देर के लिए काम करने और चारों ओर खोज करने की कोशिश करने के बाद मैं वास्तव में स्टंप हो गया हूं इसलिए मैं यहां पोस्ट कर रहा हूं ... मैं कक्षाओं में कुछ काम करना चाहता हूं जो मैं जितना संभव हो उतना सामान्य रूप से डीजेंगो के लिए लिख रहा हूं इसलिए मैं गेटैटर का उपयोग करना चाहता हूं इस तरह के एक सामान्य तरीके से नीचे एक के रूप में कार्य करता है कॉल करने के लिए:पायथन, डीजेंगो, ऑब्जेक्ट को कॉल करने के लिए गेटैटर (या अन्य विधि) का उपयोग कैसे करें जिसमें कई गुण हैं?

तरह से मैं क्या यह काम करता है कि (गैर सामान्य तरीके से):

from django.db.models import get_model 
mymodel = get_model('appname', 'modelname') 
dbobject = mymodel.objects.all() 

मेरे प्रयास से एक अभी भी एक सामान्य तरीके से इस बनाने के लिए, काम नहीं कर रहा है, यह कुछ वापस लौटाता है लेकिन यह उचित वस्तु प्रकार नहीं है ताकि मैं इससे डेटा प्राप्त कर सकूं (यह django के लिए डेटाबेस कॉल)

ret = getattr(mymodel,'objects') 
dbobject = getattr(ret,'all') 

उत्तर

12

आप परिणाम कॉल करना भूल गए।

dbobject = mymodel.objects.all() 

विधि mymodel.objects.all एक्सेस करता है और फिर इसे कहते हैं।

ret = getattr(mymodel,'objects') 
self.dbobject = getattr(ret,'all') 

विधि mymodel.objects.all विधि का उपयोग करता है लेकिन इसे कॉल नहीं करता है।

आपको बस को अंतिम पंक्ति को बदलने के लिए है:

self.dbobject = getattr(ret,'all')() 
+0

धन्यवाद .. ठीक है, अब मुझे यह मिल गया है .. मैंने पहले ऐसा कुछ करने की कोशिश की थी, लेकिन इसे सब सिर्फ एक गेटर कॉल में डाल रहा था, अब मैं समझता हूं कि मैं बस 'सभी' भाग को बुला रहा हूं शेष "पिछले भाग" को गेटैटर में ऑब्जेक्ट के रूप में, ताकि इसे अलग से करने की आवश्यकता हो, इसे साफ़ करने के लिए धन्यवाद ... मैंने सोचा था कि मैं कर सकता हूं: dbobject = getattr (model, 'objects.all')() लेकिन यह काम नहीं कर रहा था इसलिए इस तरह से मुझे इस तरह से भ्रमित कर दिया – Rick

2

आप कॉल विशेषता अगर यह एक समारोह है, उदाहरण के लिए करने की आवश्यकता होगी

ret = getattr(mymodel,'objects') 
all = getattr(ret,'all') 
self.dbobject = all()