https://www.djangopackages.com/grids/g/versioning/
но есть подозрение, что лучше сделать самому, тк батарейки не всегда делают так как нужно
Или как такое сделать?
Book:
title = text
# some fields
versions = M2M(BookVersion)
BookVersion:
title = text
# some fields
user_changed = FK(User)
но лучше все изменения запихнуть в json
частого обращения к версиям не будет, запись не сильно активная, постгрес уже поддерживает такие поля - поиск будет не сильно тормозной. А при росте обьемов до миллионов обьектов можно будет мигрировать на вариант више
User:
#
UserBookVersion:
book = FK(Book)
user = FK(User)
content = jsonField()