我正在使用CreateView1启动一个Estate实例。它工作正常,即使它是模板视图!现在我想重定向到UpdateView2并更新这些字段(我有充分的理由)。如何将实例1的pk传递给第二个视图,以及如何编辑这些字段?任何帮助将不胜感激!!
views.py
class CreateView1 (TemplateView):
template_name = 'estate_form1.html'
def get(self,request):
form = RegisterForm()
args = {'form': form,}
return render(request, self.template_name, args)
def post(self,request):
form = RegisterForm(request.POST)
if form.is_valid():
estate = form.save(commit=False)
estate.save()
form = RegisterForm()
return redirect('register:update2')
args = {'form': form,}
return render(request, self.template_name, args)
class UpdateView2(UpdateView):
template_name = 'estate_form2.html'
model = Estate
fields = ["price", "area"]
estate_form1.html和estate_form2.html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
forms.py
class RegisterForm(forms.ModelForm):
price = forms.IntegerField(label="Price:")
area = forms.IntegerField(label="Area:")
Class Meta:
model = Estate
fields = ('price', 'area')
非常感谢您的支持!
答案 0 :(得分:0)
将ID作为参数添加到CreateView1中的重定向函数中。
def post(self, request):
form = RegisterForm(request.POST)
if form.is_valid():
estate = form.save(commit=False)
estate.save()
form = RegisterForm()
return redirect('register:update2', pk=estate.id)
然后确保您的url.py文件已设置为接收ID。它看起来像是:
path('register/<int:pk>/', UpdateView2.as_view(), name='update2'),
我不确切地知道你要做什么,但作为补充说明,我考虑使用CreateView而不是TemplateView。这将允许您使用success_url重定向。