Saya memiliki model django:
class Book(models.Model):
[..]
dan saya ingin memiliki nama model sebagai string: 'Book'. Ketika saya mencoba mendapatkannya dengan cara ini:
Book.__class__.__name__
itu mengembalikan 'ModelBase'.
Ada ide?
django
django-models
Schneck
sumber
sumber
Seperti yang disarankan oleh jawaban di atas , Anda dapat menggunakan
str(Book._meta)
.Pertanyaan ini cukup lama, tetapi saya menemukan yang berikut berguna (diuji pada Django 1.11, tetapi mungkin bekerja pada yang lebih lama ...), karena Anda mungkin juga memiliki nama model yang sama dari banyak aplikasi.
Dengan asumsi Buku ada di
my_app
:sumber
2.2.3
juga.Saya mendapatkan nama kelas dengan menggunakan,
sumber
str(self.model._meta)
adalah apa yang saya cari; Adapun yang lain beri aku kelas orang tua.Book._meta.object_name
atauBook._meta.model_name
. Kemudian jika Anda menginginkan nama aplikasinya juga, itu dapat diakses melaluiBook._meta.app_label
Dengan cara ini, setiap kali Anda memanggil
book.class_name()
kode python (juga di template{{book.class_name}}
) itu akan mengembalikan nama kelas yaitu 'Buku'.sumber
Anda juga dapat mengambil nama model dari kelas Meta model. Ini berfungsi pada kelas model itu sendiri serta setiap instance-nya:
Pengaturan
verbose_name
danverbose_name_plural
bersifat opsional. Django akan menyimpulkan nilai-nilai ini dari nama kelas model (Anda mungkin telah memperhatikan penggunaan nilai-nilai itu di situs admin).https://docs.djangoproject.com/en/3.0/ref/models/options/#verbose-name
sumber