如何在django上使用modelformset更新数据

如何在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

我正在制作示例代码来使用表单和modelformset。create_函数运行良好。但是update_函数有一个问题。当它调用函数时,会出现错误MultiValueDictKeyError。我不知道如何修理它。请帮忙

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')