답변:
Book.__class__.__name__
수업 자체에서 수행하는 대신 책 객체에 book_object.__class__.__name__
대해 수행하면 'Book'(즉, 모델 이름)이 제공됩니다.
에 의해 제안 된 것과 같은 위의 대답은 , 당신은 사용할 수 있습니다 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
. Django 버전 에서도 작동합니다 .
사용하여 클래스 이름을 얻었습니다.
str(Book._meta)
Book.__class__.__name__ -> this will give you the ModelBase
str(self.model._meta)
내가 찾던 것입니다. 다른 하나는 부모 클래스를주세요.
Book._meta.object_name
또는 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/en/3.0/ref/models/options/#verbose-name