【发布时间】:2020-08-19 05:59:08
【问题描述】:
我从事在线服装、鞋子、配饰商店的项目已有一段时间了。我有一个包含类别、子类别、尺寸字段等的表单。如果所选类别是“衣服”或“鞋子”,则需要尺寸字段。但是,如果类别选择是“附件”,则尺寸字段将被隐藏并且不是必需的,因为在我的情况下,附件没有尺寸。我的类别选择也不是硬编码的,它们存储在数据库中。因此,当我进行验证时,在表单的 clean 方法中,我硬编码了一个 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
【问题讨论】:
标签: python django forms web django-forms