From 37b3ba20bd127638df22926412892c479aba41ac Mon Sep 17 00:00:00 2001 From: fabianallendorf Date: Wed, 5 Nov 2025 15:40:22 +0100 Subject: [PATCH] skip using foreign key to construct and display diff of foreign key fields --- auditlog/diff.py | 6 +++++- auditlog/models.py | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/auditlog/diff.py b/auditlog/diff.py index dd64d20..0ac7a9c 100644 --- a/auditlog/diff.py +++ b/auditlog/diff.py @@ -106,7 +106,11 @@ def get_field_value(obj, field, use_json_for_changes=False): value = json.dumps(value, sort_keys=True, cls=field.encoder) except TypeError: pass - elif (field.one_to_one or field.many_to_one) and hasattr(field, "rel_class"): + elif ( + not settings.AUDITLOG_USE_STRING_REPRESENTATION_IN_FOREIGN_KEY_CHANGES + and (field.one_to_one or field.many_to_one) + and hasattr(field, "rel_class") + ): value = smart_str(getattr(obj, field.get_attname()), strings_only=True) else: value = getattr(obj, field.name) diff --git a/auditlog/models.py b/auditlog/models.py index edc5dd2..49d79bb 100644 --- a/auditlog/models.py +++ b/auditlog/models.py @@ -542,6 +542,10 @@ class AbstractLogEntry(models.Model): """ :return: A string representing a given FK value and the field to which it belongs """ + # Return value if FK value should explicitly be interpreted as string representation + if settings.AUDITLOG_USE_STRING_REPRESENTATION_IN_FOREIGN_KEY_CHANGES: + return value + # Return "None" if the FK value is "None". if value == "None": return value