diff --git a/auditlog/models.py b/auditlog/models.py index b13763a..b207dc0 100644 --- a/auditlog/models.py +++ b/auditlog/models.py @@ -126,15 +126,14 @@ class LogEntryManager(models.Manager): kwargs.setdefault("additional_data", get_additional_data()) objects = [smart_str(instance) for instance in changed_queryset] - kwargs["changes"] = json.dumps( - { - field_name: { - "type": "m2m", - "operation": operation, - "objects": objects, - } + kwargs["changes"] = { + field_name: { + "type": "m2m", + "operation": operation, + "objects": objects, } - ) + } + kwargs.setdefault("cid", get_cid()) return self.create(**kwargs) diff --git a/auditlog_tests/tests.py b/auditlog_tests/tests.py index 55779b1..09aad02 100644 --- a/auditlog_tests/tests.py +++ b/auditlog_tests/tests.py @@ -21,6 +21,7 @@ from django.test import RequestFactory, TestCase, override_settings from django.urls import reverse from django.utils import dateformat, formats from django.utils import timezone as django_timezone +from django.utils.encoding import smart_str from auditlog.admin import LogEntryAdmin from auditlog.cid import get_cid @@ -400,6 +401,20 @@ class ManyRelatedModelTest(TestCase): log_entry.additional_data, {"related_model_id": self.related.id} ) + def test_changes(self): + self.obj.related.add(self.related) + log_entry = self.obj.history.first() + self.assertEqual( + log_entry.changes, + { + "related": { + "type": "m2m", + "operation": "add", + "objects": [smart_str(self.related)], + } + }, + ) + class MiddlewareTest(TestCase): """