У меня есть модель django:
class Book(models.Model):
[..]
и я хочу иметь название модели в виде строки: «Книга». Когда я пытаюсь понять это так:
Book.__class__.__name__
он возвращает "ModelBase".
Любая идея?
django
django-models
Schneck
источник
источник
Как указано в ответе выше , вы можете использовать
str(Book._meta)
.Этот вопрос довольно старый, но я нашел следующее полезным (протестировано на Django 1.11, но может работать и на более старых ...), поскольку у вас также может быть одно и то же имя модели из нескольких приложений.
Предполагая, что книга находится в
my_app
:источник
2.2.3
.Я получил имя класса, используя,
источник
str(self.model._meta)
это то, что я искал; что касается другого, дайте мне родительский класс.Book._meta.object_name
илиBook._meta.model_name
. Затем, если вам нужно также название приложения, оно доступно черезBook._meta.app_label
Таким образом, всякий раз, когда вы
book.class_name()
вызываете код Python (также в шаблоне{{book.class_name}}
), он возвращает имя класса «Книга».источник
Вы также можете получить название модели из класса Meta модели. Это работает как с классом модели, так и с любым его экземпляром:
Настройка
verbose_name
иverbose_name_plural
не обязательна. Django выведет эти значения из имени класса модели (вы могли заметить использование этих значений на сайте администратора).https://docs.djangoproject.com/en/3.0/ref/models/options/#verbose-name
источник