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
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.