Как получить пользователя, который изменил объект? django-simple-history

Я пытаюсь сохранить историю объекта с помощью библиотеки django-simply-history, пока что я могу видеть изменения самого объекта, но не пользователя, который сделал эти изменения.

У меня есть следующие настройки.

Настройки:

# settings.py

INSTALLED_APPS = [
    # ...
    'simple_history',
    # ...
]

MIDDLEWARE = [
    # ...
    'simple_history.middleware.HistoryRequestMiddleware',
    # ...
]

Модели:

from django.db import models

from apps.companies.models import Company
from simple_history.models import HistoricalRecords

# Create your models here.
class Customer(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=20)
    dateCreated = models.DateTimeField(auto_now_add=True,)
    dateUpdated = models.DateTimeField(auto_now=True,)
    telephone = models.CharField(max_length=20, blank=True, null=True)
    address = models.CharField(max_length=20, blank=True, null=True)
    email = models.EmailField(max_length=254, blank=True, null=True)

    history = HistoricalRecords()

Затем в Shell я делаю:

customer = Customer.objects.all().last()

customer.name = "Test"

customer.save()

customer.history.all().last()

Out[79]: <HistoricalCustomer: Customer object (d2211cc1-9762-4f6d-9086-634deee95b1e) as of 2021-08-24 09:28:44.978543+00:00>

# How can I print the user that changed the object????
customer.history.all().last()_history_user

Спасибо,

Простое промежуточное программное обеспечение истории будет хранить пользователя, который сделал изменение в поле .history_user записи истории. Таким образом, вы можете получить последнего пользователя, изменившего объект Customer с помощью:

customer.history.all().last().history_user

Обратите внимание, что вы можете вносить изменения только с пользователем в веб-сервере, например, с помощью представления, или с помощью ModelAdmin. Если вы вносите изменения с помощью самой оболочки Django, то не существует "активного пользователя", и в этом случае пользователь, хранящийся в исторической записи, будет NULL/None.

Вернуться на верх