diff options
Diffstat (limited to 'postgresqleu/util/backendviews.py')
-rw-r--r-- | postgresqleu/util/backendviews.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/postgresqleu/util/backendviews.py b/postgresqleu/util/backendviews.py index e1eb614b..685320d9 100644 --- a/postgresqleu/util/backendviews.py +++ b/postgresqleu/util/backendviews.py @@ -181,7 +181,13 @@ def backend_process_form(request, urlname, formclass, id, cancel_url='../', save if form.json_form_fields: for fn, ffields in form.json_form_fields.items(): d = getattr(form.instance, fn, {}) - d.update({fld: form.cleaned_data[fld] for fld in ffields}) + for fld in ffields: + if form.cleaned_data[fld] or not getattr(form.fields[fld], 'delete_on_empty', False): + # If we have a value, or if we're asked to store empty strings, + # then do so. + d[fld] = form.cleaned_data[fld] + elif form.cleaned_data[fld] == '' and getattr(form.fields[fld], 'delete_on_empty', False): + del d[fld] setattr(form.instance, fn, d) form.instance.save(update_fields=form.json_form_fields.keys()) |