我有一个包含一组字段的表单。例如,它可能是:姓名,姓氏和电子邮件。 表单上有两个提交按钮:保存并关闭。并且有两种验证方案。
在点击“保存”按钮后,首先检查字段“name”是否有值。如果它有数据库将被更新。
在第二种情况下,我点击“关闭”按钮。并且应该有另一个验证:名称不为空且包含特定值,姓氏不为空且电子邮件包含某些特定域名。
那么我该如何为一个表单实现所有这些验证方案。我只看到一个糟糕的解决方案,就像它在表单clean()方法中的一些if-else语句。
答案 0 :(得分:0)
我认为表单验证应该保持字段的类型(例如,确保不应该为空的字段)。我会在视图中提出你建议的验证。它将是一种if-then-else,但它将基于按下的按钮。
答案 1 :(得分:0)
我不明白为什么在save()
方法中使用if / else会如此糟糕。我可能会做这样的事情:
def clean_save(self):
#validation for the save case
def clean_close(self):
#validation for the close case
def clean(self):
cleaned_data = self.cleaned_data
if cleaned_data.get('save_button'):
return self.clean_save()
elif cleaned_data.get('close_button'):
return self.clean_close()
else:
raise ValidationError('some error message')
我是从头脑中写这个并没有测试过,但是这样的方法应该有助于将验证保留在视图之外。