summaryrefslogtreecommitdiff
path: root/postgresqleu/util/backendviews.py
diff options
context:
space:
mode:
Diffstat (limited to 'postgresqleu/util/backendviews.py')
-rw-r--r--postgresqleu/util/backendviews.py8
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())