作成したユーザープロファイルがあり、IntegrityError
null許容でないフィールドなど、を回避するためにいくつかのパラメーターを渡す必要があります。ページの下部にここで説明するように作成フックを作成しましたが、を呼び出すと、初期化されていないプロファイルで作成したばかりのユーザーを保存しようとしているためcreate_user
、整合性エラーが発生します。create_user
どうすればこれを回避できますか?
1 に答える
1
提供されているリンクには、ユーザープロファイルを自動的に作成する方法の詳細がないため、実際にどのように設定したかはわかりません。ただし、これは一般的な方法です。
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.get_or_create(user=instance)
signals.post_save.connect(create_user_profile, sender=User)
問題は、UserProfile
(または同等のモデル)にnullにできない追加のフィールドがあるため、それらのフィールドに値を指定する必要があるようです。post_save
ただし、それは信号を使用して単純に不可能です。通常、プロファイルのchar以外のフィールドはすべてnull許容であるか、適切なデフォルトを提供するため、少なくとも特定の情報なしでオブジェクトを作成できます。インターフェイスを介して、ユーザーがプロファイルに入力するように強制できますが、データベースレベルで強制するのは賢明ではありません。
于 2012-05-23T17:20:26.500 に答える