looks like it's still unsolved.  i have not used SQLFORM.factory with 
multiple fields, and i have not used the blob data type in BigTable, rather 
i use blobstore image uploads.

can you get it to work with just 1 table in your form?  can you determine 
what vars are posted and what comes out of filter_fields to see where the 
data has gone wacky?

On Monday, August 20, 2012 9:49:14 AM UTC-7, JungHyun Kim wrote:
>
> Hello!
>
> I have a problem with upload field.
>
> I tried to upload a file through one form with two tables using 
> SQLFORM.factory.
> It worked OK on web2py rocket server. But with GAE server (both local test 
> server and real GAE server), I can't upload files.
> The problem is blob is None after uploaded.
>
> I defined two tables.
>
>
>
> db.define_table('mibmessage',
>                     Field('user',db.auth_user,writable=False,readable=
> False,default=auth.user_id,),
>                     Field('message','text',notnull=True,
>                             widget = lambda field, value: SQLFORM.widgets.
> text.widget(field, value, _class='my-string')),
>                     Field('attached_files','list:reference 
> attached_file',writable
> =False, default=[], readable=False),
>                 )
>
> db.define_table('attached_file',
>                     Field('file','upload'),
>                     Field('original_filename', writable=False, notnull=
> False),
>                     Field('mibmessage',db.mibmessage),
>                 )
>
>
>
> And in controller, I saved them.
>
>    # Make a form
>     form =  SQLFORM.factory(db.mibmessage, db.attached_file, table_name=
> 'attached_file')
>     
>     # Save New Message
>     if form.process().accepted:
>         try:
>             # Insert a message
>             message_id = db.mibmessage.insert(**db.mibmessage.
> _filter_fields(form.vars))
>             form.vars.mibmessage=message_id
>             
>             if form.vars.file != '':
>                 form.vars.original_filename = request.vars.file.filename
>                 # Insert an attached file
>                 image_file_id = db.attached_file.insert(**db.attached_file
> ._filter_fields(form.vars))
>                
>                 # The message has a list of attached files
>                 db.mibmessage[message_id].update_record(attached_files=[
> image_file_id])
>                 db.commit()
>
>         except Exception:
>             db.rollback()
>
>
> After uploaded, both rows are created. But  'file_blob' field of the 
> 'attached_file' is None.
>
> If I upload an file using SQLFORM with single table (attached_file), it is 
> OK.
>
> Did I use SQLFORM.factory wrong?
>
> I read this thread ( 
> https://groups.google.com/forum/?fromgroups#!searchin/web2py/SQLFORM.factory$20one$20form$20multiple$20tables$20blob/web2py/O6D1J8h_MNA/lmFbEF1XzWcJ%5B1-25%5D<https://groups.google.com/forum/?fromgroups#%21searchin/web2py/SQLFORM.factory$20one$20form$20multiple$20tables$20blob/web2py/O6D1J8h_MNA/lmFbEF1XzWcJ%5B1-25%5D>),
>  
> but I couldn't understand it. 
>
>
>
>
>
>

-- 



Reply via email to