オブジェクト作成時にDjangoシグナル(例:post_save
またはpost_init
など)を選択的に抑制するか、特定のパラメータを送信するかどうかは疑問です。Djangoでpost_save(またはその他の)シグナルを選択的に抑制することはできますか?
私が持っているものは、User
オブジェクトです。これは、さまざまな方法と場所で作成することができます。したがって、Profile
のカスタムオブジェクトをそれぞれUser
に自動的に割り当てるには、post_save
シグナルを使用します。しかし、ある特定のケースでは、作成したProfile
オブジェクトにバインドしたいという余分な情報があります。シグナルをpost_save
シグナルの引数として渡すことは素晴らしいことですが、見えません。
他のオプションは、手動でProfile
オブジェクトを作成することですが、その後、私はそのUser
が保存された後、それ以外Profile
はUser
インスタンスにバインドすることはできませんする必要があります。しかし、User
インスタンスを保存すると、信号によって呼び出される関数によって別のProfile
が作成されます。
ちょうど作成されたProfile
オブジェクトを取得することはできません。その結果、'Profile' object is unsubscriptable
というエラーが発生します。何かアドバイス?
アップデート:ここで
が可能な状況の例である:私はそれを保存するcreateUserProfile方法にsignup
方法で変数extra_param
を取得するにはどうすればよい
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()
Profile
オブジェクトの一部として
+1。私はこれに対する答えを知りたいです。 – PeanutButterJelly