我正在连接一个自定义的post_save信号,并注意到我似乎无法找到一个简单的方法来传递一组kwargs.
在保存期间(在自定义表单内)
def save(self, commit=True):
user = super(CustomFormThing, self).save(commit=False)
#set some other attrs on user here ...
if commit:
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
然后在我的自定义post_save钩子里面我有以下(但从来没有得到任何kwargs)
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
some_id = kwargs.get('some', None)
other_id = kwargs.get('other', None)
if created:
#do something with the kwargs above...
Run Code Online (Sandbox Code Playgroud)
我如何将kwargs从save保存到post_save事件?
DrT*_*rsa 37
内置信号由Django发送,因此您无法控制他们的kwargs.
您可以:
在模型实例中存储其他信息.像这样
def save(self, commit=True):
user = super(CustomFormThing, self).save(commit=False)
#set some other attrs on user here ...
user._some = 'some'
user._other = 'other'
if commit:
user.save()
return user
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
some_id = getattr(instance, '_some', None)
other_id = getattr(instance, '_other', None)
if created:
#do something with the kwargs above...
Run Code Online (Sandbox Code Playgroud)