I have declared a table as
db.define_table("agencies",
    Field("hotel", "reference hotels", notnull=True),
    Field("subgroup", "reference subgroups", label="Subgroup"),
    Field("agency", "string", length=100, writable= False, label="Agency", 
notnull=True),
    Field("alias", "string"),
    Field("commission", "double"),
    auth.signature
)

At the controller:
frm2 = SQLFORM(db.agencies, formstyle="rows").process(formname="agencies")
if frm2.accepted:
   dd("All good")
elif frm2.errors:
   dd(frm2.errors)

dd is a print to browser and stop execution function, not related.

request.post_vars:

<Storage {
 'agency': 'My Cool Agency'
 , 'modified_by': '2'
 , 'alias': ''
 , 'hotel': '7'
 , 'is_active': ''
 , 'created_by': '1'
 , 'id': '1'
 , 'commission': ''
 , 'created_on': '2016-03-31 14:47:34'
 , 'modified_on': '2016-04-01 17:25:32'
 , '_formkey': 'beee6ee6-d9d4-4de9-85c5-b248cb5f6f20'
 , '_formname': 'agencies'
 , 'subgroup': '43'}>


i get this frm2.errors:
<Storage {'hotel': 'no data'}>

hotel is a referenced field and it has a value of 7 on the request.post_vars

inspecting sqlhtml.py accepts function, line 1673: 

            elif field.default is None and field.type != 'blob':
                self.errors[fieldname] = 'no data'
                self.accepted = False
                return False
            value = fields.get(fieldname, None)
            if field.type == 'list:string':
                if not isinstance(value, (tuple, list)):
                    fields[fieldname] = value and [value] or []
            elif isinstance(field.type, str) and field.type.startswith('list:'):
                if not isinstance(value, list):
                    fields[fieldname] = [safe_int(
                        x) for x in (value and [value] or [])]
            elif field.type == 'integer':
                if value is not None:
                    fields[fieldname] = safe_int(value)
            elif field.type.startswith('reference'):
                ## Avoid "constraint violation" exception when you have a
                ## optional reference field without the dropdown in form. I.e.,
                ## a field with code to be typed, in a data-entry form.

the reference field is falling in 

elif field.default is None and field.type != 'blob':

instead 


 elif field.type.startswith('reference'):


should referenced fields be checked before blobs?

Thanks



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