Я работаю над проектом интернет-магазина одежды, обуви, аксессуаров. У меня есть форма с категорией, подкатегорией, полем размера и т. Д. c. Если выбранная категория - «одежда» или «обувь», поле размера обязательно. Но если выбрана категория «аксессуары», поле размера скрыто и не требуется, потому что в моем случае аксессуары не имеют размеров. Кроме того, мои выбор категории не жестко запрограммированы, они хранятся в базе данных. Поэтому, когда я выполнял проверку, в чистом методе моей формы я жестко закодировал оператор if, который выдает ошибку, когда выбор категории пользователя отличается от «аксессуаров» и когда поле размера пустое. Но я думаю, что это не очень чисто, потому что утверждение if довольно жестко закодировано. И мой вопрос: есть ли более чистое решение для этой задачи?
class ItemCreateForm(forms.ModelForm):
class Meta:
model = Item
fields = ['category', 'subcategory', 'brand', 'brand_collection', 'price', 'price_negotiable',
'size', 'gender', 'condition', 'description']
def clean(self):
cleaned_data = super().clean()
category = cleaned_data.get("category")
size = cleaned_data.get("size")
if str(category) != 'accessories' and not size:
print(category)
print(size)
self.add_error('size', 'Това поле е задължително!')
return cleaned_data