feat: mixin for update forms
This commit is contained in:
+1
-50
@@ -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,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user