Наследование форм 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']