diff --git a/browser/form.py b/browser/form.py index 4914583..1a8d26c 100644 --- a/browser/form.py +++ b/browser/form.py @@ -159,7 +159,11 @@ class ObjectForm(NodeView): for k, v in data.items(): #overwrite data with values from request.form if k in self.request.form: - data[k] = toUnicode(form[k]) + field = self.schema.fields.get(k) + if field: + fi = field.getFieldInstance(self.instance) + data[k] = fi.marshall(fi.unmarshall(form[k])) + #data[k] = toUnicode(form[k]) return data @Lazy diff --git a/schema/field.py b/schema/field.py index 2fd2be2..e264705 100644 --- a/schema/field.py +++ b/schema/field.py @@ -89,7 +89,8 @@ class RelationFieldInstance(FieldInstance, BaseRelationFieldInstance): def marshall(self, value): if value: - return dict(title=value.title, uid=util.getUidForObject(value.context)) + return dict(title=value.title, + uid=util.getUidForObject(baseObject(value))) def display(self, value): if value: