在视图中,我有以下课程:
class AddPersonView(CustomCreateView):
template_name = "register/add.html"
form_class = PersonForm
model = Person
obj = Person.objects.all().count()
if obj > 0:
obj = Person.objects.last()
success_url = reverse_lazy('register:edit_person_view', kwargs={'pk': obj.id})
def get_context_data(self, **kwargs):
context = super(AddPersonView,
self).get_context_data(**kwargs)
class EditPersonView(CustomUpdateView):
template_name = "register/edit.html"
form_class = PersonForm
model = Person
obj = Person.objects.all().count()
if obj > 0:
obj = Person.objects.last()
success_url = reverse_lazy('register:edit_person_view', kwargs={'pk': obj.id})
def get_context_data(self, **kwargs):
context = super(EditPersonView,
self).get_context_data(**kwargs)
return context
我的意图是,当您在此人的注册页面上提交submit
时,新页面就是该人的编辑页面。但是,在添加或编辑一个人之后,我的使用方式是,使用上一个记录的id
打开下一页。
例如,如果我现在注册一个ID为person
的{{1}}并给12
我应该打开的页面应该是submit
,但它正在打开mysite.com/register/edit/12
我尝试执行以下操作:在两个类中都使用了此函数,而不是使用变量mysite.com/register/edit/11
:
sucess_url
但是,通过在页面上输入def get_success_url(self):
return reverse('register:edit_person_view', kwargs={'pk': self.kwargs('pk')})
会出现此错误:
submit
下一页成为我要添加/编辑的对象的编辑页面的正确方法是什么?
编辑
进行一些TypeError at /register/edit/12/
argument of type 'NoneType' is not iterable
During handling of the above exception (Reverse for 'None' not found. 'None' is not a valid view function or pattern name.)
函数不起作用的感知测试,因为当它使用相同的形式且带有get_success_url
变量时,在编辑人员并进行提交时,我将重定向到新页面进行新的注册。
success_url
但是使用该功能时:
class EditPersonView(CustomUpdateView):
template_name = "register/edit.html"
form_class = PersonForm
model = Person
success_url = reverse_lazy('register:add_person_view')
def get_context_data(self, **kwargs):
context = super(EditPersonView,
self).get_context_data(**kwargs)
return context
我遇到同样的错误
def get_success_url(self):
return reverse('register:add_person_view')
出什么问题了,以至于TypeError at /register/edit/12/
argument of type 'NoneType' is not iterable
During handling of the above exception (Reverse for 'None' not found. 'None' is not a valid view function or pattern name.)
函数不起作用?
答案 0 :(得分:0)
您的一个错误是因为实例化创建视图时调用了Person.objects.last()
,这是在创建新Person之前 。
对于get_success_url,请尝试以下操作:
def get_success_url(self):
return reverse('register:edit_person_view', kwargs={'pk': self.object.pk})