2010-08-30 14 views

risposta

98

Prova Book.__name__.

I modelli di Django derivano dallo ModelBase, che è il Metaclass per tutti i modelli.

34

Invece di fare Book.__class__.__name__ sulla classe stessa, se lo si fa su un oggetto libro, poi book_object.__class__.__name__ vi darà 'Book' (vale a dire il nome del modello)

+0

Questo mi ha aiutato nel mio caso. Ho unito 2 querysets di modelli diversi. In un ciclo avevo bisogno di ottenere il nome della classe dell'oggetto quando sto iterando. – Peter

+0

Peter, come hai unito due querysets ?? O il set unito è solo un elenco di istanze di modello ?? Grazie –

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

Con questo modo, ogni volta che si chiamato book.class_name (anche nel modello {{book.class_name}}) restituirà il nome della classe che è 'Libro'.

2

ho avuto nome della classe utilizzando,

str(Book._meta) 

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

Grazie; 'str (self.model._meta)' è quello che stavo cercando; come per l'altro dammi la classe genitore. – ppython

Problemi correlati