2016-04-06 12 views
1

私は別のモデルから派生したプロキシモデルを持っています。今度はこのプロキシモデルのオブジェクトを作成し、ContentType.objects.get_for_model(obj)を使用してコンテンツタイプオブジェクトを見つけようとしますが、プロキシモデルのコンテンツタイプを指定するのではなく、ベースクラスのコンテンツタイプオブジェクトを返します。私はdjango 1.7.8を使用しています。ContentType.objects.get_for_model(obj)プロキシモデルオブジェクトで使用する場合の基本クラスモデルを返します

class BaseModel(models.Model): 
    field1 = models.CharField(max_length=200) 
    field1 = models.CharField(max_length=200) 


class ProxyModel(BaseModel): 
    class Meta: 
     proxy = True 

今私は、プロキシモデルのオブジェクト

proxy_obj = ProxyModel.objects.get(field1=1) 

とproxy_obj

content_type = ContentType.objects.get_for_model(proxy_obj) 

のコンテンツタイプのクラスを見つけようとし取得しています。しかし、これは私のコンテンツタイプのオブジェクトを生成しますProxyModelではなくBaseModel。なぜこれは不合理な方法で動作していますか?または何か間違っているのですか? get_for_model方法ジャンゴ・ドキュメントから

答えて

3

は、モデルクラスやモデルのインスタンスのいずれかをとり、そのモデルを表す のContentTypeインスタンスを返します。 for_concrete_model=False は、プロキシモデルのContentTypeを取得できます。あなたはこのように、get_for_model()for_concrete_model=Falseを渡す必要が

:プロキシモデルのContentTypeをを得るために

content_type = ContentType.objects.get_for_model(proxy_obj, for_concrete_model=False) 
0

を、あなたはget_for_model()に引数for_concrete_model = Falseのに渡す必要があります。

例:

content_type = ContentType.objects.get_for_model(proxy_obj, 
               for_concrete_model=False) 

詳細についてはofficial docsを参照してください。

関連する問題