Django ModelFormset_Factory issue with rendering form

I've reviewed other questions and answers, worked through the django documentation and followed tutorials but I can't get my model formset to render correctly.

So far, I have the following working fine:

forms.py

class BulkUpdateForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(BulkUpdateForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_method = "post"
        self.helper.layout = Layout(
            Row(
                Column("slug"),
            ),
            Row(
                Column("registered"),
                Column("start_date"),
                Column("end_date"),
                Column("achieved"),
                Column("pfr_start"),
                Column("pfr_end"),
            ),
        )

        self.fields["slug"].label = ""

    class Meta:
        model = LearnerInstance
        fields = ["id","slug","registered","start_date","end_date","achieved","pfr_start","pfr_end",
        ]

        widgets = {
            "slug": forms.TextInput(
                attrs={
                    "readonly": True,
                },
            ),
        }

template

<div class="container d-flex align-items-center flex-column pt-1">
  <div class="card text-dark bg-light mb-3 p-3" style="max-width: 95rem;">
    <br>
      <form action="" method="post">
        {% csrf_token %}
        {{ formset.management_form }}
          {% for form in formset %}
             {% crispy form %}
             <hr>
              {% endfor %}

            </div>
        <input type="submit" name='registered', class="btn btn-primary" value="Update">
        </form>
  </div>

views.py

def bulk_update(request):
    context = {}
    selected_rows = request.POST.getlist("select") #posted from previous page with a table and checkboxes to select the queryset I need to update
    
    BulkFormset = modelformset_factory(
        LearnerInstance, form=BulkUpdateForm, edit_only=True, extra=0)
    
    queryset = LearnerInstance.objects.filter(id__in=selected_rows)

    formset = BulkFormset(queryset=queryset)

    context["formset"] = formset

    return render(request, "learner/bulk_update.html", context)

Results in the following output, which is what I hope to see: output

However - when I add request POST

BulkFormset = modelformset_factory(
        LearnerInstance, form=BulkUpdateForm, edit_only=True, extra=0
    )
    queryset = LearnerInstance.objects.filter(id__in=selected_rows)

    if request.method == "POST":
        formset = BulkFormset(
            request.POST,
            queryset=queryset,
        )
        if formset.is_valid():
            formset.save()
    else:
        formset = BulkFormset(queryset=queryset)

    context["formset"] = formset

I see the following:

enter image description here

Please could someone help me understand where I've gone wrong? I have tried to resolve this myself but always come to the same issue as soon as the post request is added to the view.

Вернуться на верх