Создание версионности для django

Я хотел бы создать версионность для моих моделей django. Я уже пробовал django-reversion, но думаю, что это не подходит для моего случая использования и у меня есть проблемы с many-to-many через модели и наследованием нескольких таблиц.

Мой случай использования: У меня есть веб-приложение для нескольких арендаторов. Каждый арендатор имеет свой собственный пул ресурсов. Арендаторы могут создавать документы и ссылаться на ресурсы. Вот простая диаграмма: enter image description here

Теперь при каждом обновлении документа или ресурса, на который ссылается документ, я буду создавать версию документа. Таким образом, версия должна показывать все изменения документа и ресурсов, на которые ссылается документ. Но при возврате к версии должны возвращаться только прямые значения документа, а не ресурсы. Например, документ: enter image description here

Теперь я редактирую документ и удаляю ресурс_1 с id 1. Также я изменяю имя ресурса_1 с id 2. enter image description here

Когда я верну этот документ к первой версии, он должен выглядеть следующим образом: enter image description here

Но как я могу этого добиться? Я думаю, я могу использовать MongoDB для хранения полной версии документа в виде сериализованных json данных при каждом обновлении. И могу создать сигнал для ресурсов, если он изменился, и проверить соответствующие документы, чтобы также создать версию для документа. Затем я создаю для каждого арендатора новую коллекцию в MongoDB.

Сами ресурсы также должны иметь версионность, а также другие модели в моем webapp, но для примера это не важно.

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