Django CreateView创建对象后如何通过nome_scheda字段跳转对应页面
解决方案
1. 重写CreateView的get_success_url方法
你需要在SchedaCreateView类中新增get_success_url方法,指定表单提交成功后的跳转路径,修改后的views.py代码如下:
from django.urls import reverse # 顶部导入reverse工具 class SchedaCreateView(CreateView): model = Schede fields = ['nome_scheda','data_inizio','data_fine'] template_name = 'crea/passo1.html' def form_valid(self, form): form.instance.utente = self.request.user return super().form_valid(form) # 新增成功跳转逻辑 def get_success_url(self): # self.object就是刚创建完成的Schede实例,把nome_scheda作为参数传入路由 return reverse('creazione_passo1', kwargs={'nome': self.object.nome_scheda})
2. 可选:优化URL规则(推荐)
你可以给urls.py的路径参数明确指定类型,避免参数匹配歧义:
# 把<nome>改为<str:nome>,明确参数类型为字符串 path('crea/<str:nome>/', creazione, name="creazione_passo1"),
注意事项
- 请确保
Schede模型的nome_scheda字段值唯一,否则可能出现跳转地址冲突的问题 - 如果
nome_scheda包含空格、特殊符号,想要生成更规范的URL,可以给模型新增slug字段,创建对象时通过django.utils.text.slugify方法把nome_scheda转为slug格式后存储,路由参数对应改为<slug:nome>即可
内容的提问来源于stack exchange,提问作者user15374373
相关产品推荐
相关产品推荐

