¿Cómo leer el nombre de la tabla de la base de datos de una instancia de modelo?

101

Dado el objeto de instancia de un modelo, ¿cómo puedo obtener el nombre de la tabla de la base de datos?

No quiero especificar nombres explícitamente en la clase Meta.

Ber
fuente

Respuestas:

179

Encontré la respuesta yo mismo: el atributo _meta de una instancia tiene la información:

model_instance._meta.db_table
Ber
fuente
esto es bastante extraño que el nombre de la tabla de Model sea accesible desde el atributo protegido_meta::Options
Alex-Bogdanov
5
@ Alex-Bogdanov: la _metapropiedad no está protegida. Es una parte documentada de la API pública. Tiene el prefijo de subrayado inicial para evitar conflictos con nombres que las personas realmente quieran usar en sus modelos.
Ryan Hiebert
1
Si desea, cree un método de propiedad para devolverlo ... @property def table_name(self): return self._meta.db_table
Jcc.Sanabria