Thursday, December 30, 2010

Re: ModelForm validation

Alex

And I seem to have been equally unclear :}

I agree that cleaned_data is only available after is_valid() - the
point being that your form *will* be valid if you have set the value
for that field in a hidden input. I do not see that this can be a
"security risk" - the default that you are setting beforehand is a
dummy (meaningless) value which, in any case, you are going to be
overriding. How is this done? Consider this example from the Django
Book (http://www.djangobook.com/en/1.0/chapter07/):

def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
topic = form.clean_data['topic']

Now if you wanted to overide the topic, you could instead have:
topic = 'my custom text'


Hope this is clearer!

Derek

On Dec 29, 4:07 pm, Axel Bock <mr.axel.b...@gmail.com> wrote:
> hi derek,
>
> thanks for your hints - was I really that unclear? hm.
>
> anyway, could you please give an example about how to "override/check the
> value for that field after the form POST"? I don't seem to be able to do
> that, and believe me, I have read the docs.
>
> I think cleaned_data is only available after is_valid() was called, but
> is_valid() throws an exception because the required field is missing - and I
> can't set it.
>
> The hidden field thing is the last thing I wanted to try. bad style, you
> know :) , cause security risk.
>
> thanks!
> Axel.
>
> 2010/12/29 derek <gamesb...@gmail.com>
>
>
>
>
>
>
>
> > Axel
>
> > Not sure I have followed all your requirements, but perhaps you can
> > try:
> > * set a default value for the required field
> > * mask the required field on the form being shown to the user (make it
> > hidden)
> > * override/check the value for that field after the form POST and data
> > "clean" (see:
> >http://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs#proce...
> > )
>
> > HTH
> > Derek
>
> > On Dec 28, 10:21 pm, Axel Bock <justsomeoneoutth...@gmail.com> wrote:
> > > Hi all,
>
> > > I have this little problem. In my little webapp I have a data model which
> > > defines several required fields. Depending on WHO is logged on, some of
> > > these fields should not be changed by the user and be pre-filled (or
> > better:
> > > post-filled) by the application.
>
> > > Currently I delete the fields out of the formset like this:
> > >             # prevent entering missions for all other bases
> > >             del missionform.fields['base']
>
> > > so the field gets not rendered in the view. Which works nicely.
>
> > > Unfortunately base is required, so the validation fails. Now how can I
> > > insert the missing values into the POST data? I tried this:
> > >         if request.user.userflag.is_student:
> > >             logging.error("studen")
> > >             inst=FlownMission(
> > >                 student=request.user,
> > >                 base=request.user.studentinfo.current_base
> > >             )
> > >         flownmission = FlownMissionForm(request.POST, instance=inst)
>
> > > which does not work at all :( . The validation fails all the time ... . I
> > > just need to inject 2 required values somewhere in the POST data, but I
> > have
> > > no clue how.
>
> > > Any help would be greatly appreciated, and I am a total django "newb" ...
> > :)
>
> > > Thanks & greetings,
> > > Axel.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Django users" group.
> > To post to this group, send email to django-users@googlegroups.com.
> > To unsubscribe from this group, send email to
> > django-users+unsubscribe@googlegroups.com<django-users%2Bunsubscribe@google groups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/django-users?hl=en.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment