How can I get a model name as a "string" from a model instance.
I know you can do something like type(model_instance)
but this is returning the class itself as an object <Model_Name: > not as a string.
Asked
Active
Viewed 7,372 times
8
Ken1995
- 139
- 2
- 8
-
7Possible duplicate of [Getting the class name of an instance in Python](https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance-in-python) – internet_user Mar 14 '18 at 00:55
3 Answers
21
from user.models import User
user = User.objects.create_user(tel='1234567890', password='YKH0000000')
print(user._meta.model)
<class 'user.models.User'>
print(user._meta.model.__name__)
User
print(user.__class__.__name__)
User
Ykh
- 7,079
- 1
- 17
- 30
0
To stay close to the question, type(instance).__name__ is a valide answer (which is the one given in this older question)
So using @Ykh example:
from user.models import User
user = User.objects.create_user(tel='1234567890', password='YKH0000000')
print(type(user).__name__)
User
G. Vallereau
- 86
- 2
- 4
-3
By defining the str or unicode method ?
AstroMax
- 112
- 9
-
1defining str gives a string name for the "model_instance" not the model – Ken1995 Mar 14 '18 at 00:56