2012-10-16 17 views
9

है, मैं सामान्य कार्य में दस्तावेजों की संपत्ति प्राप्त करने का प्रयास कर रहा हूं, लेकिन कुछ मॉडल में दस्तावेज़ विशेषता नहीं हो सकती है। क्या पहले कोई जांच करने का कोई तरीका है कि किसी मॉडल के पास दस्तावेज़ प्रॉपर्टी है या फिर सशर्त रूप से कोड चलाएं?Django कैसे जांचें कि ऑब्जेक्ट में संपत्ति

if self.model has property documents: 
     context['documents'] = self.get_object().documents.() 
+0

आप कभी ऐसे मॉडल का उपयोग क्यों कर रहे हैं जिसमें वहां नहीं है? –

+0

मेरे पास सामान्य दृश्य है जो एकल मॉडल में सभी मॉडलों को प्रदर्शित करता है। शुरू में मेरे पास कोई दस्तावेज नहीं था लेकिन अब उनमें से कुछ दस्तावेजों को संलग्न कर चुके हैं। इसलिए मैं सोच रहा था कि क्या ओथवाई की जांच करने का कोई तरीका है, मुझे नए दृश्य को 9 0% कोड के साथ परिभाषित करने की आवश्यकता है। हैकिश समाधान के लिए मैंने कोशिश करने के साथ एक फ़ंक्शन बनाया है और सिवाय इसके कि मुझे साइट पर कोई त्रुटि नहीं मिल रही है, लेकिन उचित तरीके से ढूंढ रहा था – user825904

+0

आपके पास मॉडल क्यों नहीं है कि इसे एक व्यू डिफ़ॉल्ट के साथ किस दृश्य का उपयोग करना चाहिए? –

उत्तर

24

आप अगर मॉडल दस्तावेज संपत्ति है देखने के लिए जाँच करने के लिए उपयोग कर सकते हैं hasattr()

if hasattr(self.model, 'documents'): 
    doStuff(self.model.documents) 

हालांकि, this answer अंक बाहर कुछ लोगों को लगता है कि "आसान अनुमति से माफी के लिए पूछने के" दृष्टिकोण बेहतर अभ्यास है।

try: 
    doStuff(self.model.documents) 
except AttributeError: 
    otherStuff() 
संबंधित मुद्दे