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
[{'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+unsubscribe@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.
No comments:
Post a Comment