Django的。多个表单验证方案

时间:2011-09-01 12:24:33

标签: django forms validation

我有一个包含一组字段的表单。例如,它可能是:姓名,姓氏和电子邮件。 表单上有两个提交按钮:保存并关闭。并且有两种验证方案。

在点击“保存”按钮后,首先检查字段“name”是否有值。如果它有数据库将被更新。

在第二种情况下,我点击“关闭”按钮。并且应该有另一个验证:名称不为空且包含特定值,姓氏不为空且电子邮件包含某些特定域名。

那么我该如何为一个表单实现所有这些验证方案。我只看到一个糟糕的解决方案,就像它在表单clean()方法中的一些if-else语句。

2 个答案:

答案 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')

我是从头脑中写这个并没有测试过,但是这样的方法应该有助于将验证保留在视图之外。