Как отследить историю транзакций и откат при необходимости? - PullRequest
0 голосов
/ 02 июля 2019

Допустим, я веду журнал активности пользователя в модели UserActivity.

class UserActivity(models.Model):
    description = models.TextField()
    query = models.TextField()
  1. Как реализовать и какие поля требуются в этой модели, чтобы я могВозможность откатить транзакцию в истории в любое время?
  2. Каковы ее минусы и зависимости?

Я знаю transaction.atomic.Думайте об этом как о совершении сделки несколько дней назад и откате сегодня.

1 Ответ

0 голосов
/ 02 июля 2019

Я бы предложил использовать такой инструмент, как django-simple-history [PiPy] . Вам необходимо добавить промежуточное программное обеспечение и определить HistoricalRecords() для моделей, которые вы хотите отслеживать.

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

Например, вы можете запросить состояние объекта в истории, например:

from datetime import datetime

my_model_object<b>.history.as_of(</b>datetime(2019, 7, 2, 7, 56)<b>)</b>

для получения my_model_object в состоянии, в котором он находился 2-7-2019 7: 56: 00.

...