8

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.

Ken1995
  • 139
  • 2
  • 8
  • 7
    Possible 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 Answers3

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