Как использовать одну и ту же форму 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, но это не сработало

Вернуться на верх