如何在django上使用modelformset更新数据
我正在制作示例代码来使用表单和modelformset。create_函数运行良好。但是update_函数有一个问题。当它调用函数时,会出现错误MultiValueDictKeyError。我不知道如何修理它。请帮忙如何在django上使用modelformset更新数据,django,Django,我正在制作示例代码来使用表单和modelformset。create_函数运行良好。但是update_函数有一个问题。当它调用函数时,会出现错误MultiValueDictKeyError。我不知道如何修理它。请帮忙 def update(request, portfolio_id): template_name = 'portfolio_update_form.html' pofol = Portfolio.objects.get(id=portfolio_id) if
def update(request, portfolio_id):
template_name = 'portfolio_update_form.html'
pofol = Portfolio.objects.get(id=portfolio_id)
if request.method == 'GET':
form = PortfolioForm(instance=pofol)
formset = PortfolioImageModelFormSet(
queryset=PortfolioImage.objects.filter(portfolio__id=portfolio_id),
prefix='image'
)
elif request.method == 'POST':
form = PortfolioForm(request.POST, instance=pofol)
formset = PortfolioImageModelFormSet(request.POST, request.FILES, prefix='image')
if form.is_valid() and formset.is_valid():
portfolio = form.save()
for imageForm in formset:
pofolImage = imageForm.save(commit=False)
pofolImage.portfolio = portfolio
pofolImage.save()
return redirect('detail', portfolio_id)
return render(request, template_name, {
'form' : form,
'formset' : formset
})
forms.py
PortfolioImageModelFormSet = modelformset_factory(
PortfolioImage,
fields=('image','caption',),
widgets={'caption' : forms.TextInput(attrs={'class' : ''})},
labels={'caption': ''},
extra=1
)
试试这样的。您必须创建公文包\u update\u form.html并定义您的创建视图您的创建视图(请求、表单、模板)
感谢您的回答,您的代码正在运行。但是formset不起作用。我只是添加了更多的代码。我想知道我的更新函数代码有什么问题。
def update(request, portfolio_id):
pofol = get_object_or_404(Portfolio, id=portfolio_id)
if request.method == 'POST':
form = PortfolioForm(request.POST, instance=pofol)
else:
form = PortfolioForm(instance=pofol)
return your_create_view(request, form, 'portfolio_update_form.html')