Tengo un modelo de django:
class Book(models.Model):
[..]
y quiero tener el nombre del modelo como cadena: 'Libro'. Cuando trato de hacerlo de esta manera:
Book.__class__.__name__
devuelve 'ModelBase'.
¿Alguna idea?
django
django-models
Schneck
fuente
fuente
Como sugiere la respuesta anterior , puede usar
str(Book._meta)
.Esta pregunta es bastante antigua, pero encontré la siguiente útil (probada en Django 1.11, pero podría funcionar en versiones anteriores ...), ya que también puede tener el mismo nombre de modelo de varias aplicaciones.
Suponiendo que Book está en
my_app
:fuente
2.2.3
.Obtuve el nombre de la clase usando
fuente
str(self.model._meta)
es lo que estaba buscando; en cuanto al otro, dame la clase de padres.Book._meta.object_name
oBook._meta.model_name
. A continuación, si desea que el nombre de la aplicación, así, que es accesible a través deBook._meta.app_label
De esta manera, siempre que llame
book.class_name()
al código Python (también en la plantilla{{book.class_name}}
), devolverá el nombre de la clase que es 'Libro'.fuente
También puede recuperar el nombre del modelo de la clase Meta del modelo. Esto funciona en la clase de modelo en sí, así como en cualquier instancia de ella:
Configuración
verbose_name
yverbose_name_plural
es opcional. Django inferirá estos valores del nombre de la clase del modelo (es posible que haya notado el uso de esos valores en el sitio de administración).https://docs.djangoproject.com/en/3.0/ref/models/options/#verbose-name
fuente