From 66596aac63dd3df78d9ca894add8f2b14206c22c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 13 Jun 2017 13:03:36 +0200 Subject: [PATCH] fix ModelInstanceWrapper foreignkey values --- src/c3nav/editor/models.py | 2 +- src/c3nav/editor/wrappers.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/c3nav/editor/models.py b/src/c3nav/editor/models.py index 527a9a80..8848cb17 100644 --- a/src/c3nav/editor/models.py +++ b/src/c3nav/editor/models.py @@ -98,7 +98,7 @@ class ChangeSet(models.Model): for name, value in kwargs.items(): setattr(change, name, value) change.save() - # print(repr(change)) + print(repr(change)) return change def add_create(self, obj, author=None): diff --git a/src/c3nav/editor/wrappers.py b/src/c3nav/editor/wrappers.py index 1f9cb34f..34af7156 100644 --- a/src/c3nav/editor/wrappers.py +++ b/src/c3nav/editor/wrappers.py @@ -77,7 +77,7 @@ class ModelInstanceWrapper(BaseWrapper): continue self._initial_values[field] = getattr(self, field.name) elif (field.many_to_one or field.one_to_one) and not field.primary_key: - self._initial_values[field] = getattr(self, field.name).pk + self._initial_values[field] = getattr(self, field.name) def __eq__(self, other): if type(other) == ModelWrapper: @@ -117,8 +117,10 @@ class ModelInstanceWrapper(BaseWrapper): for field, initial_value in self._initial_values.items(): new_value = getattr(self._obj, field.name) if field.related_model: - if new_value.pk != initial_value.pk: - self._changeset.add_update(self, name=field.name, value=new_value.pk, author=author) + new_pk = None if new_value is None else new_value.pk + initial_pk = None if initial_value is None else initial_value.pk + if new_pk != initial_pk: + self._changeset.add_update(self, name=field.name, value=new_pk, author=author) continue if new_value == initial_value: