2010-08-30 85 views
71

類的名稱,我有一個Django模型:獲取的Django模型

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

,我想有型號名稱爲字符串:「書」。當我嘗試這樣得到它時:

Book.__class__.__name__ 

它返回'ModelBase'。

有什麼想法?

回答

98

嘗試Book.__name__

Django模型來自ModelBase,它是所有模型的Metaclass。

34

而是階級本身做Book.__class__.__name__的,如果你這樣做了一本書的對象,然後book_object.__class__.__name__會給你「書」(即模型的名稱)

+0

這一次幫助了我。我合併了2個不同模型的查詢集。在循環中,我需要在迭代時獲取對象的類名。 – Peter 2015-11-19 17:06:31

+0

彼得,你是如何合併兩個查詢集的?或者是合併集合只是一個模型實例列表?謝謝 – 2017-01-25 20:40:27

1
class Book(models.Model): 
    [..] 
    def class_name(self): 
    return self.__class__.__name__ 

通過這種方式,只要您稱爲book.class_name(同樣在模板{{book.class_name}}中),它將返回類名'Book'。

2

我使用了類的名字,我的情況

str(Book._meta) 

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

謝謝; 'str(self.model._meta)'是我正在尋找的;至於其他給我的父母班。 – ppython 2017-10-16 13:54:56