2011-02-01 28 views
31

Diyelim ki kaydetme kodundayım. Modelin adını veya nesnenin içerik türünü nasıl edinebilirim?Modelin adını veya Django nesnesinin içerik türünü nasıl edinebilirim?

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 

Bu kod çalışır, ancak ben MODEL_NAME bilmek zorunda:

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

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

cevap

53

Böyle nesneden model adını alabilirsiniz:

self.__class__.__name__ 

içeriği tercih ederseniz yazın, bunu şu şekilde elde edebilirsiniz:

ContentType.objects.get_for_model(self) 
+0

Bir veritabanı tarayıcı aracınız varsa, bir django_content_type öğesinin oluşturulduğunu görebilirsiniz. Ad, app_label ve model gibi bazı alanları içerir. Bu model bilgilerini içeride olduğum sınıftan almam gerekiyor. – Seitaridis

+1

Model alanı küçük harfli bir dizedir ve sınıf adından türetilmiştir. – Seitaridis

+1

Sonra 'ct = ContentType.objects.get_for_model (self)' gibi bir şey yapın, ardından 'return ct.app_label' veya ihtiyacınız olan ContentType özniteliği. – gravelpot

İlgili konular