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.

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.