当前位置: 首页 > 面试题库 >

如何将kwargs从保存传递到post_save信号

田文景
2023-03-14
问题内容

我连接了一个自定义的post_save信号,发现我似乎找不到一种简单的方法来传递一组kwarg。

在保存过程中(在自定义表单中)

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

然后在我的自定义post_save挂钩中,我有以下内容(但从未收到任何花哨的东西)

@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...

如何将kwargs从保存传递到post_save事件?


问题答案:

内置信号由Django发送,因此您无法控制它们的扭曲。

您可以:

  1. 定义并发送自己的信号。
  2. 在模型实例中存储其他信息。像这样

    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...
    


 类似资料:
  • 问题内容: 我在Django应用程序中有一个用户注册表格,该表格收集用户尝试注册时的其他数据,例如地址,城市,国家/地区,电话号码等。 该数据通过信号保存在“帐户”模型类中。用户创建过程如下所示: 在这里,当用户发布表单时将调用该函数,在该函数下,我可以获得POST数据,我想要的是将该数据传递给方法,以便其填充模型中的字段。 现在,我确实看到了在数据库中创建的对象,但是除用户字段之外的所有字段均为

  • 我正在尝试在html WebView中将信息(lattiude,longitority)传递到google map。问题是应用程序没有在NetBeans中启动。它返回说: 使用平台执行C:\Users\Carlos\Documents\NetBeansProjects\OpenPilot\Dist\Run1883323097\OpenPilot.jar\JK1.8.0_05\JRE/bin/Jav

  • 问题内容: 我不理解以下示例,可以说我具有以下功能: 为什么#1是正确的解决方案,而#2是错误的解决方案?基本上是一个字典,所以如果我想将参数传递给openX,我认为正确的方法是没有并给出字典。但是python显然不喜欢第二个,并告诉我我给了3个而不是2个参数。那么,这背后的原因是什么? 问题答案: 在第二个示例中,您提供3个参数:文件名,模式和字典()。但是Python期望:2个形式参数和关键字

  • 我有一个简单的ImageView,当我点击它时,相机出现并请求一张照片,你拍了照片,ImageView变成了照片,像这样的东西: 相机请求后,图片被加载到Imageviewer中,然后我尝试使用以下方式将其上载到Firebase: 那里有动物。getPictureID它只是以前给定的ID。现在的问题是,在putFile()处,它不断返回FileNotFoundException。 同时,如果您知道

  • 如何在Lambda函数中引用API网关GET查询字符串参数? 当我进行测试时,我可以使用 当我使用post进行测试时,我可以使用body参数作为带有 的事件,使用get请求,但我没有body。我如何使用查询字符串参数,然后在请求中引用它们。我使用什么事件或其他属性来获取查询参数,或者我需要进行什么设置或更改? 在测试时,我引用了event[“username”],对于作为查询字符串参数传递它的AP

  • 我创建了一个新的电子应用程序。 在索引中。jsi使用节点文件系统加载数据 如果我试着使用require。JSIT之所以能够工作,是因为它运行在不同的线程上,而不是使用节点进行初始化,更像是一个实际的浏览器窗口。但有没有办法从索引中传递数据呢。js到main。js 我不知道我对这个问题的看法是否部分正确 如果您需要更多代码或信息,请询问!