我想知道是否有可能在創建對象時選擇性地抑制Django信號(例如post_save
或post_init
),或者發送特定參數。是否可以選擇性地抑制Django中的post_save(或其他)信號?
我所擁有的是一個User
對象,它可以在我的代碼中以多種不同的方式創建。因此,要自動爲每個User
分配一個自定義對象Profile
,我使用post_save
信號。但是,在一個特定情況下,我想綁定額外的信息以綁定到創建的Profile
對象。將它作爲參數傳遞給post_save
信號會很好,但看起來不太可能。
另一種選擇是手動創建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
對象的一部分?
+1。我很想知道這個答案。 – PeanutButterJelly 2011-01-27 18:54:46