J'ai un modèle Django:
class Book(models.Model):
[..]
et je veux avoir le nom du modèle en tant que chaîne de caractères : 'Book'. Quand j'essaie de l'obtenir de cette façon :
Book.__class__.__name__
ça renvoie 'ModelBase'.
Des idées ?
J'ai un modèle Django:
class Book(models.Model):
[..]
et je veux avoir le nom du modèle en tant que chaîne de caractères : 'Book'. Quand j'essaie de l'obtenir de cette façon :
Book.__class__.__name__
ça renvoie 'ModelBase'.
Des idées ?
Cela m'a aidé dans mon cas. J'ai fusionné 2 querysets qui sont de modèles différents. Dans une boucle, j'avais besoin d'obtenir le nom de la classe de l'objet lorsque je itère.
Comme suggéré par la réponse ci-dessus, vous pouvez utiliser str(Book._meta)
.
Cette question est assez ancienne, mais j'ai trouvé ce qui suit utile (testé sur Django 1.11, mais cela pourrait fonctionner sur des versions plus anciennes...), car vous pouvez également avoir le même nom de modèle provenant de plusieurs applications.
En supposant que Book soit dans my_app
:
print(Book._meta.object_name)
# Book
print(Book._meta.model_name)
# book
print(Book._meta.app_label)
# my_app
Merci; str(self.model._meta)
est ce que je cherchais; quant à l'autre, donnez-moi la classe parent.
Si vous voulez quelque chose de plus implicite qu'un appel à chaîne, alors vous pouvez obtenir la même chose (essayé sur Django 1.11) avec: Book._meta.object_name
ou Book._meta.model_name
. Ensuite, si vous voulez également le nom de l'application, cela est accessible via Book._meta.app_label
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.