Yanıtlar:
Book.__class__.__name__Sınıfın kendisi üzerinde yapmak yerine, bunu bir kitap nesnesi üzerinde yaparsanız, book_object.__class__.__name__size 'Kitap' (yani modelin adı) verir.
Yukarıdaki cevabın önerdiği gibi kullanabilirsiniz str(Book._meta).
Bu soru oldukça eski, ancak aşağıdakileri yararlı buldum (Django 1.11'de test edildi, ancak daha eski sürümlerde çalışabilir ...), çünkü birden fazla uygulamada aynı model adına sahip olabilirsiniz.
Kitabın içinde olduğunu varsayarsak my_app:
print(Book._meta.object_name)
# Book
print(Book._meta.model_name)
# book
print(Book._meta.app_label)
# my_app
2.2.3de çalışıyor .
Kullanarak sınıf ismini aldım,
str(Book._meta)
Book.__class__.__name__ -> this will give you the ModelBase
str(self.model._meta)aradığım şeydi; diğerine gelince bana ebeveyn sınıfını verin.
Book._meta.object_nameveya ile alabilirsiniz Book._meta.model_name. O zaman uygulama adını da istiyorsanız, buna şu Book._meta.app_label
Model adını modelin Meta sınıfından da alabilirsiniz. Bu, model sınıfının kendisi ve bunun herhangi bir örneği üzerinde çalışır:
# 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
Ayar verbose_nameve verbose_name_pluralisteğe bağlıdır. Django bu değerleri model sınıfının adından çıkaracaktır (bu değerlerin yönetici sitesinde kullanıldığını fark etmiş olabilirsiniz).
https://docs.djangoproject.com/en/3.0/ref/models/options/#verbose-name