Jak odczytać nazwę tabeli bazy danych instancji modelu?

101

Biorąc pod uwagę obiekt instancji modelu, w jaki sposób mogę uzyskać nazwę tabeli bazy danych?

Nie chcę jawnie określać nazw w klasie Meta.

Ber
źródło

Odpowiedzi:

179

Sam znalazłem odpowiedź: atrybut _meta instancji zawiera informacje:

model_instance._meta.db_table
Ber
źródło
to dość dziwne, że nazwa tabeli Modelu jest dostępna z chronionego atrybutu_meta::Options
Alex-Bogdanov
5
@ Alex-Bogdanov: _metanieruchomość nie jest chroniona. Jest to udokumentowana część publicznego API. Jest poprzedzony początkowym podkreśleniem, aby uniknąć konfliktów z nazwami, których ludzie mogą chcieć używać w swoich modelach.
Ryan Hiebert
1
Jeśli chcesz, utwórz metodę właściwości, aby ją zwrócić ... @property def table_name(self): return self._meta.db_table
Jcc.Sanabria