4

メールIDを一意にするdjango.contrib.auth.userモデルを変更しました。その後、同じことを反映するためにデータ移行を追加しました-

  • python manage.py datamigration appname unique_password. python manage.py schemamigration appname --auto-->変更なしが続きます。最後に、python manage.py migrate appname.

  • 0003_unique_password への転送の移行

  • アプリ名:0037_unique_password.py

電子メールが一意ではないユーザーを追加すると、エラーが発生し、 django adminを使用してユーザーを作成できません。しかし、私がそうするとき: >

  • python manage.py シェル

  • django.contrib.auth.modelsインポートユーザーから

  • user=User('cust1','123','xxx@gmail.com') これにより、'xxx@gmail.com' が既に存在するにもかかわらず、ユーザー オブジェクトが作成されます。

既存のプロジェクト (データ付き) の django.contrib.auth.user.email に一意の制約を追加するにはどうすればよいですか?

4

1 に答える 1

1

モデル検証のドキュメントに従って、モデルの検証中に一意性のチェックが行われます。モデルを呼び出しsave()ても、モデルの検証が自動的に行われるわけではありません。管理アプリケーション、モデルの検証を呼び出します。

Userなどの Python でオブジェクトを作成しuser=User('cust1','123','xxx@gmail.com')user.save(). データベース レベルで一意性チェックがある場合、この時点で例外が発生する可能性があります。保存する前に確認したい場合はis_valid()、Model インスタンスを呼び出します。

保存する前にすべてのUserオブジェクトを自動的に検証する場合は、pre_save Django シグナルを使用して、保存が進む前にモデルの検証を行います。

于 2013-01-15T06:05:41.470 に答える