Как использовать одну и ту же форму ModelForm в разных классах администратора с разными моделями
Я пытаюсь создать общую форму с валидацией диапазона дат, которая будет использоваться в 20 классах администраторов с разными моделями
Поэтому я создаю этот миксин для каждого из них, чтобы использовать
class DateControllerMixin():
def get_queryset(self, request):
qs = dateControlQuerySet(super().get_queryset(request), self.parameter_name, request)
return qs
def get_form(self, request, obj=None, change= None,**kwargs):
print(self.parameter_name)
if request.user.groups.filter(name='slaughterhouse_date_controlled').exists():
form = DateControlledForm
form.model_class = self.model
form.parameter_name = self.parameter_name
return form
return super().get_form(request, obj, change, **kwargs)
А это форма, но я не могу найти способ сделать форму без указания класса модели в Meta или использования атрибутов класса
class DateControlledForm(forms.ModelForm):
def __init__(
self, *args, **kwargs
):
self._meta.model = self.model_class
super(DateControlledForm, self).__init__(*args, **kwargs)
class Meta:
# model = self.model_class
fields='__all__'
widgets = {
'the_date': AdminDateWidget(),
}
def clean(self, **kwargs):
print(self.paramter_name)
date = self.cleaned_data.get('the_date')
today = datetime.today().date()
days_limit = AppConfigurations.objects.get(parameter_name=self.parameter_name).parameter_value
first_day = today - timedelta(days = int(days_limit))
if date < first_day:
raise forms.ValidationError({
'the_date': [_(f"Date cannot be before {first_day}.")]})
return self.cleaned_data
Я пытался редактировать мета-опции из метода init, но это не сработало