2011-01-31 12 views
8

का उपयोग कर एक विशेषता आवंटित मैं निम्नलिखित की तरह कुछ calss की विशेषताओं को मान देना का प्रयास करें:getattr

for name in dir(modelType): 
     if request.get(name): 
      getattr(model, name) = request.get(name) 

लेकिन excption मिलती है: "कार्य करने के लिए असाइन नहीं कर सकते कॉल"

कैसे क्या मैं शिकायत समय पर उन्हें जानने के बिना विशेषताओं को बदल सकता हूं?

+1

यह बहुत असुरक्षित है। क्या होगा यदि कोई यूआरएल में आईडी = पैरामीटर पास करता है? वे मौजूदा डेटा को ओवरराइट करेंगे। क्या यह Django या एक समान ढांचा है? डेटा को सहेजने के लिए आपको उचित फॉर्म हैंडलिंग का उपयोग करना चाहिए। – ironfroggy

उत्तर

13

आप गुणों को मान निर्दिष्ट करने के लिए setattr() का उपयोग करते हैं।

देखें: http://docs.python.org/library/functions.html#setattr

+0

बिल्कुल, मैं वही चीज़ पोस्ट करने वाला था लेकिन बहुत तेज़ी से जवाब देने के लिए अवरोधित कर दिया गया था! – dicato

+2

:-) एसओ पर कभी भी उबाऊ नहीं। – payne

5
setattr(model, name, request.get(name)) 

लेकिन मैं एक शब्दकोश, समर्पित कक्षा में अनुरोध डेटा बचत, या यह सीधे तक पहुँचने की सलाह देते हैं - जब तक आप विशिष्ट metaprogramming/आत्मनिरीक्षण कर रहे हैं, setattr अक्सर गलत उपकरण है काम के लिए।

संबंधित मुद्दे