Because it is possible that user A will load the page, and user B will approve the field. On 27 May 2015 03:38, "Vijay Khemlani" <[email protected]> wrote:
> If some of the fields are "already approved" and thus they can't be > edited, why are you rendering those as editable form fields in the first > place? > > On Tue, May 26, 2015 at 9:55 PM, Gergely Polonkai <[email protected]> > wrote: > >> Hello, >> >> I'm currently having hard times changing a form field's value from within >> the form's clean() method. I have already tried setting >> self.initial[field_id] and manipulating the cleaned data by calling super's >> clean method, change the required field (cleaned_data[field_id]) and >> returning the modified dict, but all for no effect. Trying to change >> self.data threw me an error saying data is immutable. Question is, is it >> even possible, even if I had to tamper with ”protected/private” >> properties/methods? >> >> Should I be on the wrong track, I try to outline the problem: >> >> I have a form with fields added programmatically in __init__(). The value >> of these fields come from one of my models. It is highly possible that >> another user puts one of the fields in approved state. If this happens, I >> don't want the current user to be able to change its value, hence I raise a >> validation error in the field's validate() method. >> >> Now comes the tricky part. In this particular case I want three things to >> happen: >> >> • warn the user about the fact that the field has already been approved >> (i.e. display the validation error message) >> • render the input field as read only so the user can't modify it (well, >> at least not in a trivial way) >> • and revert the field's value to the one in the database >> >> However, in case of a validation error the field's value remains the >> ”illegal” one the user just entered, and, as the input field is rendered >> read only, there's no way for him to change it. Thus, I am trying to set it >> during MyForm.clean() by walking through field errors looking form the >> proper error code ('already_approved'), and once found, set it back to its >> database value. This way I hope that my ValidationError remains (hence the >> warning on the page) while resetting the unchangeable value so at the time >> of the next submit it won't cause a problem. >> >> Kind regards, >> Gergely >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CACczBUK2EEaHBaS7bS%3DJF8Ce35MBkrwugtRvZCJC9E_Ovk2Rqg%40mail.gmail.com >> <https://groups.google.com/d/msgid/django-users/CACczBUK2EEaHBaS7bS%3DJF8Ce35MBkrwugtRvZCJC9E_Ovk2Rqg%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CALn3ei2dZX1KWd-SQ1S9VJ%3DbK8bN9Xj1MKvb7jS-zNyvxSz3Aw%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CALn3ei2dZX1KWd-SQ1S9VJ%3DbK8bN9Xj1MKvb7jS-zNyvxSz3Aw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACczBUJ32cOC09_oJ8WyZ_VciA9-tQgQ1T2MF4QMCf4QZ5qqnQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

