Наследование форм Django не считывает значение из поля

У меня есть 2 одинаковые формы, поэтому я решил унаследовать одну форму от другой, и это выглядит следующим образом:

class EditModuleForm(forms.Form):
    category_name = forms.CharField(label='Name', max_length=100)
    image = forms.ImageField(label='Icon', required=False)

    def clean_image(self):
        image = self.cleaned_data.get('image', None)
        if image:
            check_image_size(image)


class NewCategoryForm(EditModuleForm):
    category_slug = forms.CharField(label="Slug", max_length=10)
    field_order = ['category_name', 'category_slug', 'image']

    def clean_image(self):
        super(NewCategoryForm, self).clean_image()

и при использовании NewCategoryForm изображение не проверяется и значение None. Похоже, что форма не может получить значение из поля image. Может кто-нибудь подсказать, что я делаю не так?

Вы не возвращаете очищенные данные из вашего метода clean_image, методы clean_<field> позволяют нам изменять данные для поля, и поэтому мы должны возвращать данные из метода. Также вам не нужно переопределять метод внутри вашего подкласса:

class EditModuleForm(forms.Form):
    category_name = forms.CharField(label='Name', max_length=100)
    image = forms.ImageField(label='Icon', required=False)

    def clean_image(self):
        image = self.cleaned_data.get('image', None)
        if image:
            check_image_size(image)
        return image


class NewCategoryForm(EditModuleForm):
    category_slug = forms.CharField(label="Slug", max_length=10)
    field_order = ['category_name', 'category_slug', 'image']
Вернуться на верх