使用 django-tables2 表单将选择发送到另一个表单 - 什么都没有保存?

Using django-tables2 form to send selection to another form - nothing saves?

我有一个 django-tables2 表单,可以将选定的模型项传递给第二个表单。第二种形式的目标是允许用户编辑将应用于所有项目的值。我的问题是第二个表单验证失败,然后输入值没有被保存。我如何 link 这两个表单并在表单尝试验证之前允许用户输入? POST 请求似乎是从 table 到第二种形式——有没有办法中断它或开始第二个请求?

image_list.html:

<form method="post" action="{% url 'ExifReader:delete_image_list' %}">
  {% render_table table %}
  {% csrf_token %}
  <button type="submit" style="margin-right:10px" class="btn btn-primary" name="edit_FAN">Edit Exif</button>
  <button type="submit" style="margin-right:10px" class="btn btn-danger" onclick="return confirm('Delete?')" name="delete_images">Delete Images</button>
</form>

注意:delete_images 按钮工作正常。

views.py:

def delete_image_list(request):
    if request.method == 'POST':
        if 'delete_images' in request.POST:
            pks = request.POST.getlist('selection')
            # Delete items...

        elif 'edit_FAN' in request.POST:
            form = EditFANForm()
            pks = request.POST.getlist('selection')
            imgs = []
            for pk in pks:
                ex = exif.objects.get(pk=pk)
                imgs.append(ex.image_id)
            if request.method == 'POST':
                print('POST')
                for img in imgs:
                    print(image.objects.get(pk=img))
                    form = EditFANForm(instance=image.objects.get(pk=img))
                    if form.is_valid():
                        print('Valid')
                        formS = form.save(commit=False)
                        img.FAN = formS.FAN
                        fromS.save()
                    else:
                        print('ERRORS: ', form.errors)
            return render(request, 'ExifReader/edit_fan_form.html', {'form': form, 'pks':pks})

当我从 table 视图中单击 "edit_FAN" 按钮时,EditFANForm 正确呈现,我可以输入值,然后重定向回 table 视图, 但是 none 的值被保存了。从我添加的用于跟踪代码的 print 命令中,我在控制台中得到以下内容:

POST
774
ERRORS:   <bound method BaseForm.non_field_errors of <EditFANForm bound=False, valid=False, fields=(FAN;collection;tags)>>

其中“774”是所选对象。
所以在我看来表单到达可以编辑值的部分(EditFANForm),但是在用户可以输入值之前表单 POSTs,因此表单不验证(但是也没有任何错误?)。

我哪里错了?如何保存第二种形式的值?

Python 3.6.8,Django 2.2.6

我找到了一个似乎工作正常的解决方案:添加到另一个视图的重定向以处理第二种形式。来自 django.contrib 的消息用于将上下文数据传递到第二个视图和表单(在本例中是来自 table 的选定对象)。

from django.contrib import messages

def delete_image_list(request):
    ...
    elif 'edit_FAN' in request.POST:
        pks = request.POST.getlist('selection')
        messages.add_message(request, messages.INFO, pks)
        return HttpResonseRedirect(reverse('ExifReader:images_list_edit'))

def images_list_edit(request):
    if request.method == 'POST':
    ...