0

我对编程非常陌生,尤其是对 Django,但无法弄清楚如何使用任何以前的答案来发挥我的优势......

抱歉,如果我的问题太含糊,但本质上,我有两个不同的应用程序,我们称它们为应用程序 A 和应用程序 B,它们的数据位于两个不同的数据库中,但应用程序包含同一单个项目的信息。

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

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

  2. 然后在执行 HttpResponseRedirect 之前向 AppB 发送一个信号,该信号理想地会更新其数据。

不幸的是,我真的无法让它发挥作用。我的问题是,如果我将“请求”放入 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 信号.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/ ) 但我在信号接收功能中需要的额外功能让我感到困惑。

提前致谢...

4

0 回答 0