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.3
de ç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_name
veya 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_name
ve verbose_name_plural
isteğ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