You are you doing this:

if edit_mode:

    id = int(request.args[0])

    q = db.upload_file.id == id

    rows = db(q).select()

    for row in rows:

        for field in row:

            if field in db.upload_file.fields:

                db.upload_file[field].default = row[field]

 

... 

form = SQLFORM.factory(db.upload_file, fields=fields,

                       submit_button=T('Add to Print Queue') if not edit_mode 
else T('Update Queue'),

                       upload=URL('download'))

Instead of

                       button = T('Add to Print Queue') if not edit_mode 
else T('Update Queue')
                       form = SQLFORM(db.upload_file,  
                           request.args(0,cast=int,default=0), 
                           upload=URL('download'), 
submit_button=button).process()
                       

On Monday, 21 November 2016 09:42:54 UTC-6, Kenwyn Pilgrim wrote:
>
> I too have this issue with using SQLFORM.factory to edit.
>
> My model looks like:
>
> db.define_table('upload_file',
>
>                 Field('doc_type', 'reference document_type', required=True, 
> label=T('Type')),
>
>                 Field('pdf_name', 'upload', label=T('PDF Document'),
>
>                       uploadfolder=os.path.join(request.folder, 'uploads', 
> 'user_data')),...)
>
>
> my controller looks like:
>
> ...
>
>
> edit_mode = len(request.args) > 0
>
> if edit_mode:
>
>     id = int(request.args[0])
>
>     q = db.upload_file.id == id
>
>     rows = db(q).select()
>
>     for row in rows:
>
>         for field in row:
>
>             if field in db.upload_file.fields:
>
>                 db.upload_file[field].default = row[field]
>
>  
>
> ... 
>
> form = SQLFORM.factory(db.upload_file, fields=fields,
>
>                        submit_button=T('Add to Print Queue') if not edit_mode 
> else T('Update Queue'),
>
>                        upload=URL('download'))
>
> ... 
>
>
> If I am in edit mode and hit the "Update Queue" button, I get the validation 
> error "Please select a file", even though I have prepopulated the defaults.
>
> I have to click the "Choose File" button to select a file *again, *then it 
> works.
>
>
> Please help.
>
> Thanks.
>
>
> On Saturday, April 6, 2013 at 11:22:32 AM UTC-5, Massimo Di Pierro wrote:
>>
>> what are the models?
>>
>> On Tuesday, 2 April 2013 12:19:12 UTC-5, Ramos wrote:
>>>
>>> Back to business after almost 2 months i try again to use 
>>> sqlform.factory to create and edit documents
>>> My problem was to generate the link
>>> i rearranged my code as follows
>>>
>>>
>>> #if edit a document
>>>  if request.args(0):
>>>
>>>         row=db((db.trabalhador.id==request.args(0))).select().first()
>>>         
>>>         empresa=row.empresa
>>>         
>>>         foto=row['foto'] or None
>>>         #print foto
>>>         if row:
>>>             for field in row:
>>>
>>>                 if field in db.trabalhador.fields:
>>>                    #POPULATE FIELDS with record to edit
>>>                     db.trabalhador[field].default=row[field]
>>>
>>>     form=SQLFORM.factory(db.trabalhador,db.t_docs,
>>>         submit_button="Gravar",
>>>         
>>> fields=['nome','bi','ncart','ncartval','rfid','apt_medica','apt_medicaval','val_formacao','f_doc'],
>>>         table_name='trabalhador',
>>>         upload=URL('download')
>>>         )    
>>>
>>> I see my record and upload fields with [file] link. The [file] link 
>>> downloads my uploaded file.
>>> My upload fields have required= true in db.py!!!
>>> I do nothing and just press save
>>>
>>> I get the error   saying that i have to select a file to my upload field.
>>>
>>> I´m stuck
>>>
>>> Help please.....
>>>
>>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to