1

我是这项技术的新手,所以如果问题太简单,我会提前道歉。

我正在使用 self.cleaned_data 来获取用户输入的选定数据。它在调用 clean 时有效,但不适用于我的保存方法。

这是代码

表格.py

def clean_account_type(self):
    if self.cleaned_data["account_type"] == "select": # **here it works**
        raise forms.ValidationError("Select account type.")

def save(self):
    acc_type = self.cleaned_data["account_type"] # **here it doesn't, (NONE)**

    if acc_type == "test1":
        doSomeStuff()

任何想法为什么当我调用保存时它不起作用?

这是我的意见.py

def SignUp(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)

        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')

提前致谢。

4

1 回答 1

6

clean_<field_name表单上的方法必须返回干净的值或引发ValidationError. 来自文档https://docs.djangoproject.com/en/1.4/ref/forms/validation/

就像上面的通用字段 clean() 方法一样,这个方法应该返回清理后的数据,不管它是否改变了任何东西。

简单的改变是

def clean_account_type(self):
    account_type = self.cleaned_data["account_type"]
    if account_type == "select":
        raise forms.ValidationError("Select account type.")
    return account_type
于 2012-07-27T22:57:42.353 回答