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)