2011-02-01 14 views
31

Digamos que estoy en el código de guardado. ¿Cómo puedo obtener el nombre del modelo o el tipo de contenido del objeto y usarlo?¿Cómo puedo obtener el nombre del modelo o el tipo de contenido de un objeto Django?

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 

Este código funciona, pero tengo que conocer el nombre_del_modelo:

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

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

Respuesta

53

, usted puede obtener el nombre del modelo del objeto de la siguiente manera:

self.__class__.__name__ 

Si prefiere el contenido escriba, debe poder obtenerlo así:

ContentType.objects.get_for_model(self) 
+0

Si tiene una herramienta de navegador de base de datos, puede ver que se crea un django_content_type. Contiene algunos campos, como name, app_label y model. Necesito obtener esa información del modelo de la clase en la que estoy. – Seitaridis

+1

El campo del modelo es una cadena en minúscula y se deriva del nombre de la clase. – Seitaridis

+1

Luego haga algo como 'ct = ContentType.objects.get_for_model (self)', seguido de 'return ct.app_label' o cualquier atributo ContentType que necesite. – gravelpot

Cuestiones relacionadas