def log(user, flag, message, obj=None, dt=None): from django.contrib.admin.models import ADDITION, CHANGE, DELETION flags = dict(create=ADDITION, update=CHANGE, delete=DELETION) flag = flags.get(flag, flag) if not isinstance(message, str): message = json.dumps(message) logentry = LogEntry( user_id=user.pk, action_flag=flag, change_message=message, ) if obj: logentry.content_type_id = ContentType.objects.get_for_model(obj).pk logentry.object_id = obj.pk logentry.object_repr = str(obj)[:200] if dt: logentry.action_time = dt logentry.save() return logentry