allow 0 to be an id, thanks Paolo
This commit is contained in:
+2
-15
@@ -1912,23 +1912,10 @@ class SQLFORM(FORM):
|
|||||||
fields[fieldname] = [safe_int(
|
fields[fieldname] = [safe_int(
|
||||||
x) for x in (value and [value] or [])]
|
x) for x in (value and [value] or [])]
|
||||||
elif field.type == 'integer':
|
elif field.type == 'integer':
|
||||||
if value is not None:
|
fields[fieldname] = safe_int(value, None)
|
||||||
fields[fieldname] = safe_int(value)
|
|
||||||
elif field.type.startswith('reference'):
|
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 isinstance(self.table, Table) and not keyed:
|
||||||
if not value:
|
fields[fieldname] = safe_int(value, None)
|
||||||
fields[fieldname] = None
|
|
||||||
else:
|
|
||||||
fields[fieldname] = safe_int(value)
|
|
||||||
elif field.type == 'double':
|
elif field.type == 'double':
|
||||||
if value is not None:
|
if value is not None:
|
||||||
fields[fieldname] = safe_float(value)
|
fields[fieldname] = safe_float(value)
|
||||||
|
|||||||
Reference in New Issue
Block a user