Comment lire le nom de la table de base de données d'une instance de modèle?

101

Étant donné l'objet d'instance d'un modèle, comment puis-je obtenir le nom de la table de base de données?

Je ne veux pas spécifier de noms explicitement dans la classe Meta.

Ber
la source

Réponses:

179

J'ai trouvé la réponse moi-même: l'attribut _meta d'une instance contient les informations:

model_instance._meta.db_table
Ber
la source
c'est assez étrange que le nom de la table du modèle soit accessible à partir de l'attribut protégé_meta::Options
Alex-Bogdanov
5
@ Alex-Bogdanov: la _metapropriété n'est pas protégée. C'est une partie documentée de l'API publique. Il est précédé du premier trait de soulignement pour éviter les conflits avec les noms que les gens peuvent réellement vouloir utiliser sur leurs modèles.
Ryan Hiebert le
1
Si vous le souhaitez, créez une méthode de propriété pour la renvoyer ... @property def table_name(self): return self._meta.db_table
Jcc.Sanabria