Answers:
Book.__class__.__name__
如果不对类本身进行操作,而是对书对象进行处理,book_object.__class__.__name__
则将得到“书”(即模型的名称)
如上述答案所建议,您可以使用str(Book._meta)
。
这个问题已经很老了,但是我发现以下内容很有帮助(在Django 1.11上进行了测试,但可能在较旧的版本上工作...),因为您可能在多个应用程序中使用相同的模型名称。
假设书在my_app
:
print(Book._meta.object_name)
# Book
print(Book._meta.model_name)
# book
print(Book._meta.app_label)
# my_app
2.2.3
。
我通过使用获得班级名称,
str(Book._meta)
Book.__class__.__name__ -> this will give you the ModelBase
str(self.model._meta)
是我一直在寻找的东西;至于另一个给我的家长班。
Book._meta.object_name
或获得相同的内容(在Django 1.11上试用)Book._meta.model_name
。然后,如果您还想要应用程序名称,则可以通过Book._meta.app_label
您还可以从模型的Meta类中检索模型名称。这适用于模型类本身及其任何实例:
# Model definition
class Book(models.Model):
# fields...
class Meta:
verbose_name = 'book'
verbose_name_plural = 'books'
# Get some model
book = Book.objects.first()
# Get the model name
book._meta.verbose_name
设置 verbose_name
和verbose_name_plural
是可选的。Django将从模型类的名称推断这些值(您可能已经在管理站点中注意到了这些值的使用)。
https://docs.djangoproject.com/zh-CN/3.0/ref/models/options/#verbose-name