2011-02-01 19 views
31

私はセーブコードに入っています。モデルの名前またはオブジェクトのコンテンツタイプを取得して使用するにはどうすればよいですか?モデルの名前または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 

このコードは動作しますが、私はMODEL_NAMEを知っている必要があります:あなたがコンテンツを好む場合

self.__class__.__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() 

答えて

53

あなたは、このようなオブジェクトからモデル名を取得することができますこのようにすることができるはずです:

ContentType.objects.get_for_model(self) 
+0

データベースブラウザツールを使用している場合は、django_content_typeが作成されていることがわかります。名前、app_label、モデルなどのフィールドが含まれています。 – Seitaridis

+1

モデルフィールドは小文字の文字列で、クラス名から派生しています。 – Seitaridis

+1

次に、「ct = ContentType.objects.get_for_model(self)」の後に「return ct.app_label」または必要なContentType属性のいずれかを入力します。 – gravelpot

関連する問題