Используя django-auditlog, как я могу отобразить 'actor_id' для определенной модели?

Я создал простое приложение Django для отображения отдельных статей. Эти статьи имеют ряд полей, которые пользователи могут редактировать. Я использую пакет 'django-auditlog' для регистрации изменений в этих моделях статей. До сих пор я просто следовал документу auditlog installation doc для настройки отслеживания истории модели (а также включения промежуточного программного обеспечения, чтобы позволить отслеживать 'actor_id'). Я также добавил пример кода, который отображает последние изменения на страницах отдельных моделей следующим образом:

<!-- History display -->
<div class="table-responsive">
  <table id="history" class="table table-striped table-bordered">
    <thead>
      <tr>
        <th>Actor</th>
        <th>Field</th>
        <th>From</th>
        <th>To</th>
      </tr>
    </thead>
    <tbody>
    <!-- Human readable - change to '.changes_dict.' for proper logs -->
    {% for key, value in article.history.latest.changes_display_dict.items %}
      <tr>
        <td>{{ article.history.latest.author_id }}</td>
        <td>{{ key }}</td>
        <td>{{ value.0|default:"None"|striptags|safe }}</td>
        <td>{{ value.1|default:"None"|striptags|safe }}</td>
      </tr>
    {% empty %}
      <p>No history for this item has been logged yet.</p>
    {% endfor %}
    </tbody>
  </table>
</div>

Как следует из моего кода, я пытаюсь добавить дополнительный столбец в таблицу истории, чтобы показать, кто внес изменения, которые отображаются.

Есть ли простой способ сделать это через auditlog, или мне придется создать какой-то sql-запрос к моей таблице sqlite auditlog db для получения поля 'author_id'?

Спасибо!

Я выяснил ответ, просмотрев файл models для Django AuditLog. Невозможно вытащить актора непосредственно из поля истории модели, если вы создали поле истории с помощью метода AuditlogHistoryField(), как описано в учебнике django-auditlog.

Вместо этого я сделал следующее:

В файле views.py

from auditlog.models import LogEntry
...
dal_log = LogEntry.objects.get_for_object(article)
...
context = {'article': article, 'logs': dal_log}
return render(request, "detail.html", context)

Затем в моем шаблоне я мог работать с записями журнала для указанного объекта (в моем случае это были модели 'article'). Возможно, существует более чистый способ, но для меня он сработал.

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