1

Djangoが私に何を伝えようとしているのかわかりません。から継承するモデルWeekTwo、、から継承WeekするモデルがありmodelsModelます。別のモデルがありUserProfileます。WeekTwoでOneToOneキーとして使用したいUserProfileので、次のコード行を挿入しました。

weekTwo = models.OneToOneField(WeekTwo)

ただし、を使用してデータベースを移行しようとするとpython manage.py schemamigration my_app --auto、次のエラーが発生します。

The field 'UserProfile.weekTwo' does not have a default specified, yet is NOT NULL.

宣言に追加しようとしdefault=0ましweekTwoたが、スキーマの移行を試みると次のエラーが発生します。

IntegrityError: column weekTwo_id is not unique

interim state between migrationsさらに、南は今、私が中にいること、そして私がいることを私に告げていmight be able to recoverます。私は文字通りこれが何を意味するのか分かりません。

4

1 に答える 1

3

先に進む前に、Southが失敗した移行をすでに実行している場合は、最後に機能していたものにやり直すことをお勧めしmigrationます。

ここには2つのオプションがあり、最初は実行できますData Migrationrefも見てください。

2番目の方法であなたはweekTwoフィールドを作ることができますnullそしてblank最初に

weekTwo = models.OneToOneField(WeekTwo, null=True, blank=True)

次に、Southに移行を生成させます。

python manage.py schemamigration my_app --auto

サウスは今それについて文句を言うことはないと確信しています。

python manage.py migrate

すべてが今大丈夫なら、あなたは今戻ってweekTwoフィールドに変更することができます

weekTwo = models.OneToOneField(WeekTwo)

そしてgenerate移行してからmigrateそれら。

とにかく、南があなたのフィールドを見つけて値NULLがない場合、ステップでそれはあなたにその値を提供することを提案します、ここでもあなたのフィールドはです、なぜなら南でさえあなたにデフォルト値を提供する機会を与えるからですモデルの既存のレコードもweekTwoフィールドの一意性によりエラーが発生します。defaultschemamigrationOneToOneField

2番目の方法が機能しなかった場合でも、データ移行を使用する必要があると思います。または、今度は2番目の方法を試してみて、nullタイプ全体blankを変更してください。Fieldで試してみてください。

weekTwo = models.ForeignKey(WeekTwo)

ただし、ここではデータ移行が間違いなくよりスマートで標準的な方法になることを覚えておいてください。

于 2013-03-26T22:41:27.540 に答える