0

作成したユーザープロファイルがあり、IntegrityErrornull許容でないフィールドなど、を回避するためにいくつかのパラメーターを渡す必要があります。ページの下部にここで説明するように作成フックを作成しましたが、を呼び出すと、初期化されていないプロファイルで作成したばかりのユーザーを保存しようとしているためcreate_user、整合性エラーが発生します。create_userどうすればこれを回避できますか?

4

1 に答える 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 に答える