2010-08-30 24 views
71

के वर्ग के नाम जाओ मैं एक Django मॉडल है:Django मॉडल

class Book(models.Model): 
    [..] 

और मैं स्ट्रिंग के रूप में मॉडल का नाम करना चाहते हैं: 'बुक'। जब मैं इसे इस तरह से प्राप्त करने का प्रयास करता हूं:

Book.__class__.__name__ 

यह 'मॉडलबेस' देता है।

कोई विचार?

उत्तर

98

Book.__name__ आज़माएं।

Django मॉडल ModelBase से प्राप्त किए गए हैं, जो सभी मॉडलों के लिए मेटाक्लास है।

34

इसके बजाय वर्ग पर ही Book.__class__.__name__ करने का, यदि आप इसे एक किताब वस्तु पर करते हैं, तो book_object.__class__.__name__ दे देंगे आप 'बुक' (यानी मॉडल का नाम)

+0

यह भी मुझे मेरे मामले में मदद की। मैंने 2 क्वेरीसेट विलय किए जो विभिन्न मॉडलों के हैं। एक लूप में जब मैं पुनरावृत्ति कर रहा हूं तो मुझे ऑब्जेक्ट का क्लास नाम प्राप्त करने की आवश्यकता थी। – Peter

+0

पीटर, आपने दो क्वेरीसेट कैसे मर्ज किए ?? या मर्ज किए गए सेट सिर्फ मॉडल उदाहरणों की एक सूची है ?? धन्यवाद –

1
class Book(models.Model): 
    [..] 
    def class_name(self): 
    return self.__class__.__name__ 
इस तरह के साथ

, जब भी आप book.class_name कहा जाता है (टेम्पलेट {{book.class_name}} में भी) यह कक्षा का नाम वापस करेगा जो 'बुक' है।

2

मैं का उपयोग करके कक्षा नाम मिला,

str(Book._meta) 

Book.__class__.__name__ -> this will give you the ModelBase 
+0

धन्यवाद; 'str (self.model._meta) 'जो मैं खोज रहा था; जैसा कि दूसरे मुझे माता-पिता वर्ग देते हैं। – ppython