2016-09-13 2 views
2

にキーワード「CONTENT_TYPE」を解決できません。次の例外が発生します。は、私は私のモデルは次のようになり、一般的な関係を使用しようとしているフィールド

キーワード 'content_type'をフィールドに解決できません。選択肢は以下のとおりです。私は明示的に私のGenericForeignKeyにそれresource_typeという名前の際 DATE_CREATED、ID、リソース、RESOURCE_ID、RESOURCE_TYPE、 resource_type_id、ユーザーは、

をUSER_IDなぜそれがcontent_typeを探していますか?

答えて

0

'content'/'object'の代わりに 'resource'を使用する特別な理由はありますか?

ない場合は、私は一般的なこのような関係(同様にメタ)に関連するすべての3行を変更することをお勧め:

content_type = models.ForeignKey(ContentType) 
object_id = models.PositiveIntegerField() 
content = GenericForeignKey('content_type', 'object_id') 

私はいつもthe documentationに基づいて、一般的な関係(のためのこれらのフィールド名に固執)、ドキュメントでは 'content_type'と 'object_id'の両方の名前を変更する可能性について記述されています(おそらく、 'content'だけが変更されていない...)。私はDjangoでなぜその動作を説明するのに十分ではありません。

は、それは私が今どこにでもドキュメントでそれを見ることはありませんが、あなたがGenericRelationのソースを見ればあなたがそれを作成するときにcontent_type_fieldobject_id_fieldのキーワードがあり実現可能であり、あなたのプロジェクト

+0

を私はデフォルトの命名は少し不格好だと思うので、読みやすさと均一性のためにそれらを変更するようでした。 –

+0

ここに[link](http://stackoverflow.com/questions/18239030/django-generic-relations-error-cannot-resolve-keyword-content-object-into-fi)問題がある場合、あなたは答えがあるかもしれませんフィルタリングオブジェクト...申し訳ありませんが助けることはできません –

+0

申し訳ありませんが、私の問題はフィルタリングではありません。ジェネリックオブジェクトを取得することです。 –

1

のために働くホープ。したがって、関係をGenericRelation(object_id_field='resource_id', content_type_field='resource_type')として作成すると、適切なフィールドが検索されます。

GenericForeignKey'sが複数あり、デフォルトの名前を使用できない場合は特に必要です。あなたがここに1.11のソースを見ることができます

https://github.com/django/django/blob/stable/1.11.x/django/contrib/contenttypes/fields.py#L291

関連する問題