我正在尝试通过Django表单上载某些图像时,在视图中可以获取对象并重定向到图像的url。
我试图将一个id字段包含到ModelForm中,但是它不起作用。这是处理POST的视图。
def model_form_upload(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('index')
# here i want to redirect something like /media/image1.jgp
else:
form = DocumentForm()
return render(request, 'src/model_form_upload.html', {
'form': form
})
答案 0 :(得分:0)
是,实际上,如果您在form.save()
上调用ModelForm
,则会返回创建的实例 / modified,这样您就可以获取实例并从中提取属性,或者进行一些额外的处理。例如:
def model_form_upload(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save()
# extract items from instance
return # ...
else:
form = DocumentForm()
return render(request, 'src/model_form_upload.html', {
'form': form
})
因此,您可以使用id
的形式获取实例的instance.pk
。
或者,您也可以使用form.instance
来访问Form
创建/修改的实例。