首页 > 解决方案 > django 通过选中复选框一次编辑多个 id

问题描述

我有一些项目,我可以轻松地逐个编辑所有项目,但如果我想通过选择复选框一次编辑多个 id,我会卡住并且无法正常工作。我在哪里做错了?

这是我的代码:

fast_edit.html -> 我通过实例将变量传递给字段。

<div class="row">
  <div class="col-sm-12">
    <div class="panel panel-default">
      <div class="panel-body">
        <form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
        {%csrf_token%}
        {%for field in instance %}
        <table class="table">
          <tbody>
            <tr>
              <td width="100">
                {{field.label_tag}}
              </td>
              <td>
                {{field}}
              </td>
            </tr>
          </tbody>
        </table>
        {% endfor %}
        <div class="form-group">
          <div class="col-sm-offset-6 col-sm6">
            <button type="submit" class="btn btn-primary">Update FP Item</button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

表格.py

class FastFPForm(forms.ModelForm):

    class Meta:
        model = FP
        fields = ['FP_Item', 'P_1', 'P_2']
        widgets = {
            'FP_Item': Textarea(attrs={'cols': 50, 'rows': 3}),
            'P_1': Textarea(attrs={'cols': 50, 'rows': 1}),
            'P_2': Textarea(attrs={'cols': 50, 'rows': 1}),

        }

view.py --> 我正在向 fast_edit 函数发送变量

def items_home(request):
        pfast_type = request.GET.get("pfast_type")
        item = request.GET.get("fastedit")
        ........
        elif pfast_type and item:
            return fast_edit(pfast_type,item)

这是我的功能:

def fast_edit(request,id=None):
    if not request.user.is_active:
        return render(request, 'login.html')
    else:
        instance=get_object_or_404(FP,id=item)
        form = FastFPForm(request.POST or None,instance=instance)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user_id = request.user.id
            instance.save()
            return HttpResponseRedirect(instance.get_absolute_url())
        context={
        'FP' : FP.FP_Item,
        'instance': instance,
            'form': form
    }
        return render(request, 'fast_edit.html', context)

这是我对 fastedit 和 pfast_type 的输入,用于获取 id 和类型。

<input type="checkbox" id="P_1" name="pfast_type" value="P_1"/>
<input type="checkbox" id="{{ obj.id }}" name="fastedit" value="{{ obj.id }}"/>

我知道我的功能不正确但我无法根据需要修复它,所以我想要做的是如果 P_1 选中,我希望 P_1 字段的所有选定项目都可编辑,如果我再次选择 P_2 所有选定项目可编辑让我能够保存在 fast_edit 页面上。

我的逻辑是错误的吗?有没有其他更简单的方法可以通过选择复选框来一次编辑多个 id,或者如果我在正确的轨道上,请给我提示来解决这个问题。谢谢

我添加了,但我认为我不需要 url 就像我们正在编辑单个 id 一样 url(r'^detail/(?P\d+)/$',

网址.py

url(r'^fast_edit/$', views.fast_edit, name='fast_edit'),

标签: djangoedit

解决方案


推荐阅读