summaryrefslogtreecommitdiff
path: root/pgcommitfest/commitfest/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'pgcommitfest/commitfest/util.py')
-rw-r--r--pgcommitfest/commitfest/util.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/pgcommitfest/commitfest/util.py b/pgcommitfest/commitfest/util.py
index 862ee3d..7a38c7b 100644
--- a/pgcommitfest/commitfest/util.py
+++ b/pgcommitfest/commitfest/util.py
@@ -1,4 +1,5 @@
from django.forms.models import model_to_dict
+import django.db.models.fields.related
class DiffableModel(object):
@@ -16,6 +17,13 @@ class DiffableModel(object):
d1 = self.__initial
d2 = self._dict
diffs = dict([(k, (v, d2[k])) for k, v in d1.items() if v != d2[k]])
+ # Foreign key lookups
+ for k,v in diffs.items():
+ if type(self._meta.get_field_by_name(k)[0]) is django.db.models.fields.related.ForeignKey:
+ # If it's a foreign key, look up the name again on ourselves.
+ # Since we only care about the *new* value, it's easy enough.
+ diffs[k] = (v[0], getattr(self, k))
+ # Many to many lookups
if hasattr(self, 'map_manytomany_for_diff'):
for k,v in diffs.items():
if k in manytomanyfieldnames and self.map_manytomany_for_diff.has_key(k):