当表单验证失败时,替换form.data中的值

时间:2010-03-12 12:44:01

标签: django django-forms

我有一个表单字段,在渲染时需要json对象作为其值。 提交表单时,它返回一个逗号分隔的id字符串作为其值(不是json字符串)。但是如果表单没有验证,我想将这个id字符串转回json字符串,以便正确显示(使用jquery正确渲染json对象)。

我该怎么做?

我在考虑覆盖form.clean方法,但是当我尝试更改self.data ['fieldname']时,我收到错误'此QueryDict实例是不可变的'

当我试图更改self.cleaned_data ['fieldname']时,它对该字段的值没有任何影响。

由于

1 个答案:

答案 0 :(得分:0)

我最终做了

if request.method == 'POST': 
    new_data = request.POST.copy() 
    form = MyForm(data=new_data) 
    if form.is_valid():  
        form.save()  
    else:  
        new_data['myField'] = '[{'id':1,'value':some json object}]' 

我在视图中而不是在表单类中执行此操作。我不知道这是否是最好的方法,但它对我有用。执行request.POST.copy()允许我更改post变量,这是我首先遇到的错误之一。

希望这有助于某人