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.

Reply via email to