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 django-users+unsubscr...@googlegroups.com.
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