Django中更新Verifier实例后重定向至关联Moc实例求助
解决Django Verifier更新后重定向到关联Moc页面的问题
先假设你的模型关联结构大概是这样(方便参考):
from django.db import models class Moc(models.Model): name = models.CharField(max_length=100) # 其他Moc字段 class Verifier(models.Model): moc = models.ForeignKey(Moc, on_delete=models.CASCADE) signoff = models.BooleanField(default=False) # 其他Verifier字段
函数视图的处理方案
如果你的verifier_signoff_view是函数视图,更新Verifier实例后,直接通过关联的moc属性拿到对应的Moc对象,再用redirect跳转到Moc的详情页就行——前提是你已经给Moc的详情页URL命名(比如叫moc_detail)。
示例代码:
from django.shortcuts import get_object_or_404, redirect, render from .models import Verifier from .forms import VerifierSignoffForm def verifier_signoff_view(request, pk): verifier = get_object_or_404(Verifier, pk=pk) if request.method == 'POST': form = VerifierSignoffForm(request.POST, instance=verifier) if form.is_valid(): form.save() # 核心:跳转到关联Moc的详情页 return redirect('moc_detail', pk=verifier.moc.pk) else: form = VerifierSignoffForm(instance=verifier) return render(request, 'verifier_signoff.html', {'form': form, 'verifier': verifier})
类视图的处理方案
如果用的是Django通用类视图(比如UpdateView),只要重写get_success_url方法,返回关联Moc的URL即可。
示例代码:
from django.views.generic.edit import UpdateView from django.urls import reverse from .models import Verifier from .forms import VerifierSignoffForm class VerifierSignoffView(UpdateView): model = Verifier form_class = VerifierSignoffForm template_name = 'verifier_signoff.html' def get_success_url(self): # 获取当前更新的Verifier实例对应的Moc moc = self.object.moc # 返回Moc详情页的URL,这里假设URL名称是moc_detail return reverse('moc_detail', kwargs={'pk': moc.pk})
补充说明
- 要确保你在
urls.py里已经定义了Moc详情页的URL,比如:
from django.urls import path from .views import MocDetailView, verifier_signoff_view urlpatterns = [ path('moc/<int:pk>/', MocDetailView.as_view(), name='moc_detail'), path('verifier/<int:pk>/signoff/', verifier_signoff_view, name='verifier_signoff'), ]
- 如果你的Moc详情页用的不是
pk作为URL参数(比如用slug),记得把kwargs里的参数名对应改成你实际用的。
内容的提问来源于stack exchange,提问作者SS_SS
相关产品推荐
相关产品推荐

