1

アクティブな MySQL データベース用の単純な CRUD パネルを作成する必要があります。アプリケーションを移行しようとすると、次のエラーが表示されます。

AssertionError: A model can't have more than one Autofield

The Django Book の第 18 章で以下を読みました。

生成された各モデルには、id 主キー フィールドを含むすべてのフィールドの属性があります。ただし、モデルに主キーがない場合、Django は id 主キー フィールドを自動的に追加することを思い出してください。したがって、次のような行を削除する必要があります。

id = models.IntegerField(primary_key=True)これらの行は冗長であるだけでなく、アプリケーションがこれらのテーブルに新しいレコードを追加する場合に問題を引き起こす可能性があります。

私はこのフィールドで同じシナリオを持っています:

id_call = models.BigIntegerField(primary_key=True)

ただし、上記の提案に従ってこの行を削除すると、このフィールドを使用してこのテーブルからデータを呼び出す可能性があるため、このテーブルを使用する元のアプリケーション (django アプリケーションではない) が正しく機能しない可能性がありid_callます。

どうすればこの状況を解決できますか?

4

1 に答える 1

1

私にとっては、Wordpress データベースで作業しているときにに変更models.AutoField(unique=True)することによって。models.AutoField(primary_key=True)

models.pyによって生成されたものは約4つありましたpython manage.py --database='olddb' inspectdb > models.py。ここで、もう 1 つのデータベースを使用しました。たとえばolddb、デフォルトのデータベースを使用する場合は、削除できます--database='olddb'

走ってみpython manage.py runserverました。そこで、上記のことで各行を修正しました。

参照:-

https://docs.djangoproject.com/en/1.8/topics/db/models/#automatic-primary-key-fields

https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#

于 2015-07-20T09:53:17.960 に答える