Wie lese ich den Namen der Datenbanktabelle einer Modellinstanz?

100

Wie kann ich anhand des Instanzobjekts eines Modells den Namen der Datenbanktabelle ermitteln?

Ich möchte Namen nicht explizit in der Meta-Klasse angeben.

Ber
quelle

Antworten:

178

Ich habe die Antwort selbst gefunden: Das _meta-Attribut einer Instanz enthält die Informationen:

model_instance._meta.db_table
Ber
quelle
Das ist ziemlich seltsam, dass der Tabellenname des Modells über das geschützte Attribut zugänglich ist_meta::Options
Alex-Bogdanov,
5
@ Alex-Bogdanov: Das _metaEigentum ist nicht geschützt. Es ist ein dokumentierter Teil der öffentlichen API. Dem führenden Unterstrich wird ein Präfix vorangestellt, um Konflikte mit Namen zu vermeiden, die Personen möglicherweise tatsächlich für ihre Modelle verwenden möchten.
Ryan Hiebert
1
Wenn Sie möchten, erstellen Sie eine Eigenschaftsmethode, um sie zurückzugeben ... @property def table_name(self): return self._meta.db_table
Jcc.Sanabria