feat: mixin for update forms

This commit is contained in:
2025-01-20 11:40:07 +01:00
parent e540d4cba0
commit df67125599
13 changed files with 227 additions and 120 deletions
+1 -50
View File
@@ -1,9 +1,5 @@
from django.conf import settings
from django.core.paginator import Paginator
from django import forms
from django.db import models
from django.views.generic import TemplateView
from django.shortcuts import get_object_or_404, render
class FilteredQuerysetMixin:
@@ -62,11 +58,7 @@ class StylingMixin:
for field_name in self.styled_fields:
field = self.fields[field_name]
field.required = True
field.widget.attrs.update(
{
"class": ' '.join(self.classes)
}
)
field.widget.attrs.update({"class": " ".join(self.classes)})
if self.placeholder_for_field.get(field_name):
field.widget.attrs.update(
@@ -74,44 +66,3 @@ class StylingMixin:
"placeholder": self.placeholder_for_field.get(field_name),
}
)
class ReadUpdateView(TemplateView):
model: models.Model = None
form_class: forms.ModelForm = None
template_name: str = ""
ok_template_name: str = ""
error_template_name: str = ""
def get_model(self):
return self.model
def get_object(self):
pk = self.kwargs.get('pk')
cls = self.get_model()
return get_object_or_404(cls, pk=pk)
def get_initial_values(self, instance):
return {}
def get_context_data(self, **kwargs):
instance = self.get_object()
form = self.form_class(initial=self.get_initial_values(instance))
return {
"form": form,
}
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
instance = form.save()
return render(request, self.ok_template_name, {
"form": form,
"instance": instance,
})
return render(request, self.error_template_name, {
"form": form,
})