Respuestas:
En lugar de hacerlo Book.__class__.__name__
en la clase en sí, si lo hace sobre un objeto de libro, book_object.__class__.__name__
le dará 'Libro' (es decir, el nombre del modelo)
Como sugiere la respuesta anterior , puede usarstr(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
:
print(Book._meta.object_name)
# Book
print(Book._meta.model_name)
# book
print(Book._meta.app_label)
# my_app
2.2.3
.
Obtuve el nombre de la clase usando
str(Book._meta)
Book.__class__.__name__ -> this will give you the ModelBase
str(self.model._meta)
es lo que estaba buscando; en cuanto al otro, dame la clase de padres.
Book._meta.object_name
o Book._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
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:
# Model definition
class Book(models.Model):
# fields...
class Meta:
verbose_name = 'book'
verbose_name_plural = 'books'
# Get some model
book = Book.objects.first()
# Get the model name
book._meta.verbose_name
Configuración verbose_name
y verbose_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