Форум сайта python.su
Всем доброго времени суток!
Нужно писать в БД историю изменений объектов модели и связанных с ними. Требуется для того, чтобы смотреть полную историю кто и что делал с моделью.
Абстрактный пример - есть форум и история действий, связанных с топиком:
1 - создан топик, автор такой-то, время
2 - Добавлен комментарий к топику, автор, время
3 - Топик изменен, автор, время
4 - Добавлен такой-то файл, автор, время
5 - Топик закрыт, автор, время.
Вижу пока два выхода:
1 - Переопределить save(), но я не знаю, как в этом случае получить автора.
2 - Ручками во всех местах писать историю, но это как-то неправильно.
Какие еще могут быть предложения?
Отредактировано ZaEzzz (Ноя. 1, 2014 17:52:15)
Офлайн
ZaEzzzВ этом случае проблема будет не только с определением инициатора действия, но и с определением конкретного типа действия, т.к. по изменению данные его не всегда легко восстановить. Угадывание — это плохой подход.
Переопределить save(), но я не знаю, как в этом случае получить автора.
ZaEzzzПравильно отделить логику от представления и в каждой конкретной логической операции создавать конкретную запись в логе, так как только в месте проведения этой операции будет присутствовать вся необходимая информация (а также маркер успешности самого изменения).
2 - Ручками во всех местах писать историю, но это как-то неправильно.
Отредактировано Tiendil (Ноя. 2, 2014 08:52:17)
Офлайн
Посмотри как это сделано в админке джанги https://github.com/django/django/blob/master/django/contrib/admin/models.py#L27 , может устроит
Офлайн