自定义Django信号接收器获取数据

时间:2013-07-09 13:18:33

标签: django django-signals

我对编程非常陌生,特别是Django,但是无法解决如何使用任何先前的答案来获得优势....

道歉,如果我的问题太模糊,但基本上,我有两个不同的应用程序,我们称之为应用程序A和应用程序B,两个不同数据库上的数据,但应用程序包含相同单个项目的信息。

我想在我的“编辑详细信息”页面上编辑此信息,同时尽可能使应用程序保持独立(AppB可以了解AppA中的功能,但反之亦然)...我想我真正想要的是一个信号是这样的:

  1. AppA中的“提交”视图,当我提交数据更改时(使用文本框)调用该视图。然后保存AppA的数据..

  2. 然后在执行HttpResponseRedirect之前,信号会发送到AppB,理想情况下会更新其数据。

  3. 不幸的是,我无法真正开始工作。我的问题是,如果我将'request'放入save_details的参数中,我会收到类似“save_details()正好需要3个参数(2个给定)”的错误“....有没有人知道一种聪明的方式来获得这样的东西来工作?

    我在AppA中的提交功能看起来像这样......

        def submit(self, request, id):
            signal_received.send(sender=self, id=id)
            q = get_object_or_404(AppA, pk=id)
            q.blah = request.POST.get('wibble from the form')
            ...
            return Http.....
    

    在我的AppB signals.py文件中,我已经放了。

        signal_received = django.dispatch.Signal(providing_args=['id'])
        def save_details(sender, uid, **kwargs):
            p = AppB.objects.get(id=id)
            p.wobble = request.POST.get('wobble from the form')
            ...
        signal.received.connect(save_details)
    

    显然上面没有在其参数中提及请求,这似乎是必要的,但如果我补充一点,我就会对参数的数量产生问题。

    (我已经在每个文件的顶部导入了所有正确的东西,我认为......因此我将其关闭。) 关于上述内容的任何观点都将受到赞赏.... “请求”需要成为第一个参数吗?它似乎不喜欢我之前使用“self”但是我试图尽可能多地复制文档底部的示例(https://docs.djangoproject.com/en/dev/topics/signals/),但我在信号接收函数中需要的额外功能是弄乱了我。

    提前致谢...

0 个答案:

没有答案