2017-11-21 15 views
0

私はスキーマの移行を行いたいだけで、ModelとModelAdminに1つのフィールドを追加するだけです。なぜ私は "(admin.E003)を取得していますか? 'raw_id_fields [N]'の値はForeignKeyまたはManyToManyFieldでなければなりません。" Djangoアプリでエラーが発生しましたか?

class MyModel(models.Model): 
    some_field = models.ForeignKey(SomeModel) 
    my_new_field = models.CharField(max_length=20, blank=True, null=True, choices=[(b'1', b'1'), (b'2', b'2')]) 

class MyModelAdmin(admin.ModelAdmin): 
    list_display = ['some_field', 'my_new_field'] 
    raw_id_fields = ('some_field', 'my_new_field',) 

そして、私が得た:(admin.E003)の値が 'raw_id_fieldsは、[1]' のForeignKeyかのManyToManyFieldでなければなりません。

どうすれば修正できますか? Python 2.7、Django 1.8、PostgreSQLでアプリを書いています。私はバックエンドとPostgreSQL用のDockerコンテナも使用しています。 docsから

答えて

1

CharFieldとその名前が

raw_id_fieldsは、あなたがのForeignKeyかのManyToManyField

my_new_fieldのいずれかの入力ウィジェットに変更したいフィールドのリストであります無効な要素raw_id_fieldsがあります。このクラス属性は、の関連フィールドを対象としています。クエリーセットからデフォルトの選択ドロップダウンを生成するオーバーヘッドを避けたいが、共通入力を使用してrawidと入力する必要があります。代わりにfieldsにフィールドを追加してください:

class MyModelAdmin(admin.ModelAdmin): 
    # ... 
    fields = ['some_field', 'my_new_field'] 
    raw_id_fields = ['some_field'] 
関連する問題