pre_change_values could be None if created, don't use it then

This commit is contained in:
Laura Klünder 2024-08-26 20:30:09 +02:00
parent e81d3752a7
commit 1055adb27c

View file

@ -93,19 +93,20 @@ class DatabaseOverlayManager:
if update_fields: if update_fields:
field_values = {name: value for name, value in field_values.items() if name in update_fields} field_values = {name: value for name, value in field_values.items() if name in update_fields}
field_values = {name: value for name, value in field_values.items() if value != pre_change_values[name]} if pre_change_values is not None:
field_values = {name: value for name, value in field_values.items() if value != pre_change_values[name]}
# special diffing within the i18n fields # special diffing within the i18n fields
for field_name in tuple(field_values): for field_name in tuple(field_values):
if isinstance(instance._meta.get_field(field_name), I18nField): if isinstance(instance._meta.get_field(field_name), I18nField):
before_val = pre_change_values[field_name] before_val = pre_change_values[field_name]
after_val = field_values[field_name] after_val = field_values[field_name]
diff_val = {} diff_val = {}
for lang in (set(before_val) | set(after_val)): for lang in (set(before_val) | set(after_val)):
if before_val.get(lang, None) != after_val.get(lang, None): if before_val.get(lang, None) != after_val.get(lang, None):
diff_val[lang] = after_val.get(lang, None) diff_val[lang] = after_val.get(lang, None)
field_values[field_name] = diff_val field_values[field_name] = diff_val
self.new_operations.append(UpdateObjectOperation(obj=ref, fields=field_values)) self.new_operations.append(UpdateObjectOperation(obj=ref, fields=field_values))