【问题标题】:Delete instance in django ModelForm在 django ModelForm 中删除实例
【发布时间】:2022-01-14 21:22:19
【问题描述】:

我正在尝试删除 django ModelForm 中的实例表单,但它没有删除, 不过更新部分运行良好。

我的意见.py:

def update_component(request, pk):
    component = Component.objects.all()
    component_id = Component.objects.get(id=pk)
    form = ComponentModelForm(instance=component_id)
    if request.method=='POST' and 'form-update' in request.POST:
        form = ComponentModelForm(request.POST,request.FILES, instance=component_id)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(request.path_info)
    if request.method=='POST' and 'form-delete' in request.POST:
        form.delete()
        return redirect('/maintenance')
    context = {
        'components': component,
        'form': form,
        'component_id':component_id,
    }        
    return render(request, 'update_component.html', context)

删除表格:

    <form class="component-delete-button"><input name="form-delete" type="submit"
    class="button1" value='Delete Component' /></form>

【问题讨论】:

    标签: django django-models django-views django-templates


    【解决方案1】:

    您不需要表单来删除项目:表单是一种处理 HTML 表单输入并将其转换为 Python 更易于访问的数据的方法。

    在删除的情况下,你删除了实例,所以:

    def update_component(request, pk):
        component = Component.objects.all()
        component_id = Component.objects.get(id=pk)
        form = ComponentModelForm(instance=component_id)
        if request.method=='POST' and 'form-update' in request.POST:
            form = ComponentModelForm(request.POST,request.FILES, instance=component_id)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect(request.path_info)
        if request.method=='POST' and 'form-delete' in request.POST:
            component_id.delete()
            return redirect('/maintenance')
        context = {
            'components': component,
            'form': form,
            'component_id':component_id,
        }        
        return render(request, 'update_component.html', context)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-04
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2012-03-31
      • 2015-02-14
      • 1970-01-01
      相关资源
      最近更新 更多