0

私はプログラミング、特にDjangoに非常に慣れていませんが、以前の回答を自分の利点に使用する方法がわかりません....

私の質問があいまいすぎる場合は申し訳ありませんが、本質的に、私は 2 つの異なるアプリを持っています。アプリ A とアプリ B と呼びましょう。データは 2 つの異なるデータベースにありますが、アプリには同じ個々の項目に関する情報が含まれています。

アプリをできるだけ分離したまま、「詳細の編集」ページでこの情報を編集したい(AppBはAppAの機能について知ることができますが、その逆はできません)...私が本当に欲しいのは、機能する信号だと思いますそのようです:

  1. (テキスト ボックスを使用して) データへの変更を送信するときに呼び出される AppA 内の「送信」ビュー。その後、AppA のデータが保存されます。

  2. そして、HttpResponseRedirect が実行される前に、理想的にはそのデータを更新する AppB に信号が送信されます。

残念ながら、これを実際に機能させることはできません。私の問題は、save_details の引数に「request」を入れると、「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)

明らかに、上記は必要と思われる引数に request について言及していませんが、それを追加すると、引数の数に問題が発生します。

(私は思う各ファイルの先頭にすべての適切なものをインポートしました...したがって、それを省略します。)上記についての任意のポイントをいただければ幸いです....たとえば、「リクエスト」は最初の引数である必要がありますか?以前は「自己」を使用するのが好きではなかったようですが、ドキュメントの下部にある例をできるだけコピーしようとしました ( https://docs.djangoproject.com/en/dev/topics/signals/)しかし、信号受信機能に必要な追加機能が私を困惑させています。

前もって感謝します...

4

0 に答える 0