Django:更新时如何发送两个pk?

Django:更新时如何发送两个pk?,django,Django,当我更新与moneybook相关的moneylog时,出现以下错误: NoReverseMatch at/moneylogs/update/8/ 未找到参数为“(“”,8)”的“delete”的反转。尝试了1个模式:[“moneylogs/(?P[0-9]+)/delete/(?P[0-9]+)/$”] 我猜这是因为没有moneybook.pk,但我不知道如何处理 谁能帮我一下吗? 型号.py class Moneylog(core_models.TimeStampedModel):

当我更新与moneybook相关的moneylog时,出现以下错误:

NoReverseMatch at/moneylogs/update/8/ 未找到参数为“(“”,8)”的“delete”的反转。尝试了1个模式:[“moneylogs/(?P[0-9]+)/delete/(?P[0-9]+)/$”]

我猜这是因为没有moneybook.pk,但我不知道如何处理

谁能帮我一下吗? 型号.py

 class Moneylog(core_models.TimeStampedModel):

        moneybook = models.ForeignKey(
            moneybook_models.Moneybook, on_delete=models.CASCADE)
        pay_day = models.DateTimeField(default=NOW)
        payer = models.ForeignKey(
            tempfriend_models.Tempfriend, on_delete=models.CASCADE, related_name="payer")
        dutch_payer = models.ManyToManyField(
            tempfriend_models.Tempfriend, related_name="dutch_payer", blank=True)
        price = models.IntegerField()
        category = models.CharField(max_length=10)
        memo = models.TextField()
class moneylog_update(UpdateView):
    model = moneylog_models.Moneylog
    form_class = forms.UpdateMoneylogForm
    template_name = "moneylogs/update.html"

    def form_valid(self, form):
        moneylog = form.save(commit=False)
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=moneylog.moneybook.id)
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybooks:detail", kwargs={'pk': moneybook.pk}))
app_name = "moneylogs"

urlpatterns = [
    path("create/<int:pk>/",
         views.moneylog_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneylog_update.as_view(), name="update"),
    path("<int:moneybook_pk>/delete/<int:moneylog_pk>/",
         views.moneylog_delete, name="delete"),
]
视图.py

 class Moneylog(core_models.TimeStampedModel):

        moneybook = models.ForeignKey(
            moneybook_models.Moneybook, on_delete=models.CASCADE)
        pay_day = models.DateTimeField(default=NOW)
        payer = models.ForeignKey(
            tempfriend_models.Tempfriend, on_delete=models.CASCADE, related_name="payer")
        dutch_payer = models.ManyToManyField(
            tempfriend_models.Tempfriend, related_name="dutch_payer", blank=True)
        price = models.IntegerField()
        category = models.CharField(max_length=10)
        memo = models.TextField()
class moneylog_update(UpdateView):
    model = moneylog_models.Moneylog
    form_class = forms.UpdateMoneylogForm
    template_name = "moneylogs/update.html"

    def form_valid(self, form):
        moneylog = form.save(commit=False)
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=moneylog.moneybook.id)
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybooks:detail", kwargs={'pk': moneybook.pk}))
app_name = "moneylogs"

urlpatterns = [
    path("create/<int:pk>/",
         views.moneylog_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneylog_update.as_view(), name="update"),
    path("<int:moneybook_pk>/delete/<int:moneylog_pk>/",
         views.moneylog_delete, name="delete"),
]
url.py

 class Moneylog(core_models.TimeStampedModel):

        moneybook = models.ForeignKey(
            moneybook_models.Moneybook, on_delete=models.CASCADE)
        pay_day = models.DateTimeField(default=NOW)
        payer = models.ForeignKey(
            tempfriend_models.Tempfriend, on_delete=models.CASCADE, related_name="payer")
        dutch_payer = models.ManyToManyField(
            tempfriend_models.Tempfriend, related_name="dutch_payer", blank=True)
        price = models.IntegerField()
        category = models.CharField(max_length=10)
        memo = models.TextField()
class moneylog_update(UpdateView):
    model = moneylog_models.Moneylog
    form_class = forms.UpdateMoneylogForm
    template_name = "moneylogs/update.html"

    def form_valid(self, form):
        moneylog = form.save(commit=False)
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=moneylog.moneybook.id)
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybooks:detail", kwargs={'pk': moneybook.pk}))
app_name = "moneylogs"

urlpatterns = [
    path("create/<int:pk>/",
         views.moneylog_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneylog_update.as_view(), name="update"),
    path("<int:moneybook_pk>/delete/<int:moneylog_pk>/",
         views.moneylog_delete, name="delete"),
]
app_name=“moneylogs”
URL模式=[
路径(“创建/”,
views.moneylog\u create.as\u view(),name=“create”),
路径(“更新/”,
views.moneylog\u update.as\u view(),name=“update”),
路径(“/delete/”,
views.moneylog_delete,name=“delete”),
]
模板(moneylog\u Form\u update.html)

。。。
{{cta}}

改为

<a href="{% url 'moneylogs:delete' moneylog.moneybook_id moneylog.pk %} " >

因为你在moneylog的更新页面上

然而,传递moneybook\u id实际上根本不需要这样做,因为moneylog总是有它,所以
moneylog
实例足以确定它链接到哪个moneybook