【问题标题】:How to clear only a specific field from a form after submission?提交后如何仅清除表单中的特定字段?
【发布时间】:2020-03-29 10:45:26
【问题描述】:

我有一个包含几个字段的表单。大多数情况下,人们每次提交时只需要更改一个字段,而不是全部,所以我想将其更改为提交时只清除员工字段,但工作区选择和站(如果有任何可用)保持选中状态。

如何更改表单的处理方式,使其在提交时不会完全清除?我知道 form = WarehouseForm() 是清除它的原因,但我不确定如何指定我只想清除 employee_number 字段。

views.py

def enter_exit_area(request):
    enter_without_exit = None
    exit_without_enter = None

    if request.method == 'POST':
        form = WarehouseForm(request.POST)

        if form.is_valid():
            emp_num = form.cleaned_data['employee_number']
            area = form.cleaned_data['work_area']
            station = form.cleaned_data['station_number']

            if 'enter_area' in request.POST:
                # Submission logic
                form = WarehouseForm()

            elif 'leave_area' in request.POST:
                # Submission logic ..

                form = WarehouseForm()
    else:
        form = WarehouseForm()
    return render(request, "operations/enter_exit_area.html", {
        'form': form,
        'enter_without_exit': enter_without_exit,
        'exit_without_enter': exit_without_enter,
    })

【问题讨论】:

标签: python django


【解决方案1】:

如果它是输入类型的文本框,那么您也可以在 javascript 中执行如下操作: 例如:document.getElementById("formFieldId").value = '';

【讨论】:

    【解决方案2】:

    您可以使用initial 参数:

    if 'enter_area' in request.POST:
        # Submission logic
        form = WarehouseForm(initial={'employee_number': '', 'work_area': area, 'station_number': station})
    

    请注意,employee_number 字段为空白。

    您尚未包含提交逻辑,因此您的实现可能会略有不同。但原理是一样的。

    【讨论】:

      【解决方案3】:
      form_obj = form.save(commit=False)
      form_obj.employee_number = '' # if you want to clear employee_number field
      form_obj.save()
      
      
      Note:- 'employee_number' field should be null=True in models.py, so that you can clear the field
      
      For Example:- 
      
      def enter_exit_area(request):
          enter_without_exit = None
          exit_without_enter = None
      
          if request.method == 'POST':
              form = WarehouseForm(request.POST)
      
              if form.is_valid():
                  emp_num = form.cleaned_data['employee_number']
                  area = form.cleaned_data['work_area']
                  station = form.cleaned_data['station_number']
      
                  if 'enter_area' in request.POST:
                      # Submission logic
                      form_obj = form.save(commit=False)
              form_obj.employee_number = '' # if you want to clear employee_number field
      
                  elif 'leave_area' in request.POST:
                      # Submission logic ..
              form_obj = form.save(commit=False)
              form_obj.employee_number = '' # if you want to clear employee_number field
      
          form_obj.save()
          else:
              form = WarehouseForm()
      
          return render(request, "operations/enter_exit_area.html", {
              'form': form,
              'enter_without_exit': enter_without_exit,
              'exit_without_enter': exit_without_enter,
          })
      

      【讨论】:

        猜你喜欢
        • 2017-05-21
        • 2014-10-17
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        相关资源
        最近更新 更多