How can I obtain the model's name or the content type of a Django object?

Seitaridis picture Seitaridis · Feb 1, 2011 · Viewed 32.2k times · Source

Let's say I am in the save code. How can I obtain the model's name or the content type of the object, and use it?

from django.db import models

class Foo(models.Model):
    ...
    def save(self):
        I am here....I want to obtain the model_name or the content type of the object

This code works, but I have to know the model_name:

import django.db.models
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get(model=model_name)
model = content_type.model_class()

Answer

gravelpot picture gravelpot · Feb 1, 2011

You can get the model name from the object like this:

self.__class__.__name__

If you prefer the content type, you should be able to get that like this:

from django.contrib.contenttypes.models import ContentType
ContentType.objects.get_for_model(self)