オブジェクトの作成時にDjangoシグナル(post_save
またはなど)を選択的に抑制できるかどうか、あるいは特定のパラメーターを送信できるかどうか疑問に思っています。post_init
私が持っているのはUser
オブジェクトです。これは、コード内のさまざまな方法と場所で作成できます。したがって、Profile
それぞれにカスタムオブジェクトを自動的に割り当てるUser
ために、シグナルを使用しpost_save
ます。ただし、ある特定のケースでは、作成されたオブジェクトにバインドしたい追加情報がありProfile
ます。シグナルへの引数としてそれを渡すことはpost_save
素晴らしいことですが、それは可能ではないようです。
もう1つのオプションは、オブジェクトを手動で作成することですが、保存Profile
後に作成する必要があります。そうしないと、インスタンスにバインドできません。ただし、インスタンスを保存すると、シグナルによって呼び出される関数を介して別のインスタンスが作成されます。User
Profile
User
User
Profile
また、作成したばかりのProfile
オブジェクトを取得することはできません'Profile' object is unsubscriptable
。エラーが発生するためです。何かアドバイス?
アップデート:
考えられる状況の例を次に示します。
def createUserProfile(sender, instance, created, **kwargs):
if created:
profile, created = Profile.objects.get_or_create(user=instance)
if extra_param:
profile.extra_param = extra_param
profile.save()
post_save.connect(createUserProfile, sender=User)
def signup(request):
...
extra_param = 'param'
user.save()
extra_param
メソッド内の変数をsignup
createUserProfileメソッドに取得するにはどうすればよいProfile
ですか?オブジェクトの一部として格納されますか?