views:

81

answers:

1

Hi I have a form field which requires a json object as its value when it is rendered. When the form is submitted it returns a comma seperated string of ids as its value (not a json string). however if the form does not validate i want to turn this string of ids back into a json string so it will display properly (is uses jquery to render the json object correctly).

how would i do this?

I was thinking of overwriting the form.clean method but when I tried to change self.data['fieldname'] I got the error 'This QueryDict instance is immutable'

and when i tried to change self.cleaned_data['fieldname'] it didn't make a difference to the value of the field.

Thanks

A: 

I ended up doing

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}]' 

I did this in the view rather than on the form class. I don't know if this is the best way to do it but its worked for me. Doing request.POST.copy() allowed me to change the post variables which is one of the errors I was getting in the first place.

Hope this helps someone

John