On Sunday, January 22, 2017 at 2:56:07 PM UTC-8, Val K wrote:
>
> The problem is that one controller is used for generation and process
> form. it's like different modes
> pre-populating form by assignments form.vars.name=... could be used
> only for the request form, when form is submitted these assignments have no
> effect.
> if you want to change anything in the form after it was processed, you
> have to use DOM-parsing ( something like form[0].element('input',
> _name='...')['_value'] = ... )
>
> Use keepvalues=True or db.table.field.default as suggested above (it
> does the pre-populating during form.process())
> There is brute force variant - self-redirection : if
> form.process().accepted: ... *session.*flash='OK'; redirect(URL()) -
> but don't forget about args/vars/user_signature if it matters
>
>
>
Okay, I guess I was expecting submission to result in a fresh form
creation, but it takes the self-redirection to acheive that, eh?
/dps
> On Sunday, January 22, 2017 at 11:58:06 PM UTC+3, Dave S wrote:
>>
>>
>>
>> On Sunday, January 22, 2017 at 2:50:16 AM UTC-8, Val K wrote:
>>>
>>> Pre-populating - means just default values which will be overwritten
>>> during form.process(), i.e. form.process() reads vars values only from
>>> request.*post_*vars or from 'vars' arg - form.process(vars = {...} )
>>> and ignores pre-sets like form.vars.name=...
>>>
>>> There was a mistake in my post: instead request.vars must be request.
>>> *post_*vars - I fixed this
>>>
>>>
>>
>> But default is what I want! If I didn't want to be able to change the
>> value when filling out the form, I wouldn't even need to provide the field.
>>
>> /dps
>>
>>
>>
>>> On Sunday, January 22, 2017 at 12:48:45 PM UTC+3, Dave S wrote:
>>>>
>>>>
>>>>
>>>> On Friday, January 20, 2017 at 9:23:37 AM UTC-8, Val K wrote:
>>>>>
>>>>> form.vars appear only after form.process() call (process() -
>>>>> filter/convert/format/validate request.vars to form.vars)
>>>>> you have variants :
>>>>> 1. *before *form creation - modify field.default
>>>>> 2. *before* form.process() - modify request.vars -
>>>>> request.vars.PostDate=...
>>>>> 3. pass your own set of vars - form.process(vars=myvars)
>>>>> 4. use form.process( onvalidation=myvalidation_fun) to modify
>>>>> form.vars *after *basic validation passed but before any db actions
>>>>>
>>>>>
>>>>>
>>>>>
>>>> But what about this passage in the book?
>>>>
>>>> <URL:
>>>> http://web2py.com/books/default/chapter/29/07/forms-and-validators#Pre-populating-the-form
>>>> >
>>>> Pre-populating the form
>>>>
>>>> It is always possible to pre-populate a form using the syntax:
>>>>
>>>> 1
>>>>
>>>> form.vars.name = 'fieldvalue'
>>>>
>>>> Statements like the one above must be inserted after the form
>>>> declaration and before the form is accepted, whether or not the field
>>>> ("name" in the example) is explicitly visualized in the form.
>>>>
>>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.