From 3ee6ddb08161cc623faffb0a9714e1fee5d8616f Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 9 Dec 2018 18:51:44 -0800 Subject: [PATCH] allow 0 to be an id, thanks Paolo --- gluon/sqlhtml.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 923a1a90..3cde04ee 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1912,23 +1912,10 @@ class SQLFORM(FORM): 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) + fields[fieldname] = safe_int(value, None) 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. - ## - ## When your reference field doesn't have IS_EMPTY_OR() - ## validator, "value" will come here as a string. So, - ## safe_int() will return 0. In this case, insert will raise - ## the constraint violation because there's no id=0 in - ## referenced table. if isinstance(self.table, Table) and not keyed: - if not value: - fields[fieldname] = None - else: - fields[fieldname] = safe_int(value) + fields[fieldname] = safe_int(value, None) elif field.type == 'double': if value is not None: fields[fieldname] = safe_float(value)