2011-02-01 20 views
31

Diciamo che sono nel codice di salvataggio. Come posso ottenere il nome del modello o il tipo di contenuto dell'oggetto e usarlo?Come posso ottenere il nome del modello o il tipo di contenuto di un oggetto 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 

questo codice funziona, ma devo conoscere il 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() 

risposta

53

È possibile ottenere il nome del modello dall'oggetto in questo modo:

self.__class__.__name__ 

Se si preferisce il contenuto digitare, si dovrebbe essere in grado di ottenere che questo tipo:

ContentType.objects.get_for_model(self) 
+0

Se si dispone di uno strumento per il browser del database, è possibile vedere che viene creato un django_content_type. Contiene alcuni campi, come nome, app_label e modello. Ho bisogno di ottenere le informazioni del modello dalla classe in cui mi trovo. – Seitaridis

+1

Il campo del modello è una stringa minuscola e deriva dal nome della classe. – Seitaridis

+1

Quindi fai qualcosa come "ct = ContentType.objects.get_for_model (self)", seguito da "return ct.app_label" o qualsiasi attributo ContentType di cui hai bisogno. – gravelpot

Problemi correlati