Hello, 

I am consistently getting this bizarre error and formset_invalid is getting 
triggered.
I just tried to make a generic ListFormSetView.

[11/Jun/2021 12:48:24] "GET /adminuser/print-report/?page=1 HTTP/1.1" 200 
5244
[{'PAN_ID': ['User with this Pan ID already exists.']}]
[11/Jun/2021 12:59:29] "POST /adminuser/print-report/?page=2 HTTP/1.1" 200 
5250

In my model the USERNAME_FIELD  is PAN_ID.

Webpage looks like this

https://ibb.co/CHT4nKB

Code:

class PrintStatementView(ListFormSetView):
    paginate_by = 1
    model = User
    form_class = PrintReportModelForm
    template_name = "adminuser/printstatement.html"
    context_formset_name = "formset"
    ordering = ("PAN_ID",)

    def get_factory_object(self):
        return modelformset_factory(
            self.model,
            form=self.form_class,
            extra=0,
        )

    def formset_valid(self, formset):
        self.request.session.setdefault("to_download", [])
        self.request.session["to_download"][self.kwargs["page"]] = [
            x["PAN_ID"]
            for x in formset.cleaned_data
            if x["print_report_check"]
        ]
        return HttpResponseRedirect(
            f"{reverse('print-report')}?page={self.kwargs['page']}"
        )

    def get_success_url(self):
        return reverse("adminuser:trading-window-list")





class ListFormSetView(ListView):
    def get_factory_object(self):
        return NotImplementedError(" Implement yourself ")

    def get_context_data(self, *, object_list=None, **kwargs):

        context_formset_name = (
            getattr(self, "context_formset_name", None) or "formset"
        )

        context_data = super().get_context_data(**kwargs)

        object_list = context_data["object_list"]
        context_data[context_formset_name] = self.get_factory_object()(
            queryset=object_list, initial=self.get_initial(object_list)
        )

        return context_data

    def get_form_kwargs(self):

        context_data = super().get_context_data()

        object_list = context_data["object_list"]

        kwargs = {
            "initial": self.get_initial(object_list),
            "queryset": object_list,
        }
        if self.request.method in ("POST", "PUT"):
            kwargs.update(
                {
                    "data": self.request.POST,
                    "files": self.request.FILES,
                }
            )
        return kwargs

    def get_initial(self, queryset=[]):
        
""" Generate the initial data for the paginated queryset for the current page"""
        try:
            return self.initial
        except AttributeError:
            data = serializers.serialize("json", queryset)
            data = json.loads(data)
            return data

    def post(self, request, *args, **kwargs):
        self.object_list = self.get_queryset()
        formset = self.get_factory_object()(**self.get_form_kwargs())

        if formset.is_valid():
            return self.formset_valid(formset)
        else:
            return self.formset_invalid(formset)

    def formset_valid(self, formset):
        return HttpResponseRedirect(self.get_success_url())

    def formset_invalid(self, formset):
        print(formset.errors)
        return self.render_to_response(self.get_context_data(formset
=formset))



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3e032b7e-2999-4d62-a1d9-e8365e7a037dn%40googlegroups.com.

Reply via email to