Ich habe ein Django-Modell:
class Book(models.Model):
[..]
und ich möchte den Modellnamen als Zeichenfolge haben: 'Buch'. Wenn ich versuche, es so zu machen:
Book.__class__.__name__
es gibt 'ModelBase' zurück.
Irgendeine Idee?
django
django-models
schneck
quelle
quelle
Wie in der obigen Antwort vorgeschlagen , können Sie verwenden
str(Book._meta)
.Diese Frage ist ziemlich alt, aber ich fand Folgendes hilfreich (getestet auf Django 1.11, funktioniert aber möglicherweise auf älteren ...), da Sie möglicherweise auch denselben Modellnamen aus mehreren Apps haben.
Vorausgesetzt, das Buch ist in
my_app
:quelle
2.2.3
.Ich habe den Klassennamen mit,
quelle
str(self.model._meta)
ist das, wonach ich gesucht habe; Was den anderen betrifft, gib mir die Elternklasse.Book._meta.object_name
oder erhaltenBook._meta.model_name
. Wenn Sie dann auch den Namen der App möchten, können Sie überBook._meta.app_label
Auf diese Weise wird bei jedem Aufruf
book.class_name()
von Python-Code (auch in der Vorlage{{book.class_name}}
) der Klassenname "Book" zurückgegeben.quelle
Sie können den Modellnamen auch aus der Meta-Klasse des Modells abrufen. Dies funktioniert sowohl für die Modellklasse selbst als auch für jede Instanz davon:
Einstellung
verbose_name
undverbose_name_plural
ist optional. Django leitet diese Werte aus dem Namen der Modellklasse ab (möglicherweise haben Sie die Verwendung dieser Werte auf der Admin-Site bemerkt).https://docs.djangoproject.com/de/3.0/ref/models/options/#verbose-name
quelle