Имеется хранилище версий, это может быть:
1. Таже самая таблица - Не прозрачно, свалка данных и тормоза :(
2. Отдельная таблица, которая имеет такую же структуру + REVISION_KEY, CHANGED_TIMESTAMP на каждую строку данных - Придется хранить полные копии строк, а не только изменений, либо запретить юзать NULL в моделях (либо ключевое слово вместо NULL использовать и т.д.)
3. Отдельная БД, в ней есть таблицы (как у моделей), но структура там REVISION_KEY | CHANGED_TIMESTAMP | FIELD_NAME | FIELD_TYPE | VALUE
4. Некоторые выгружают в файлы и версионируют в системах контроля версий - Не хочется иметь лишние зависимости
Далее, как это вижу я:
1. В хранилище-историй откладываются ТОЛЬКО изменненые поля и помечается REVISION_KEY, TIMESTAMP
2. В самой модели, для каждого ячейки хранится указатель на версию в хранилище (по сути внейшний ключ), то есть самих данных не будет в таблице, а только ссылки на данные в истории
3. Естественно это будет выбираться прозрачно через кастомный менеджер модели, который при запросе данных будет отдавать актуальные данные из хранилища-историй
Вообщем подскажите что-нибудь готовое, если есть или аналоги приближенные, возможно как хранилище будет NoSQL/MySQL-engine и т.д.
Аналоги:
http://stdbrouw.github.com/django-revisions/
https://github.com/colinhowe/django-model-versions
https://github.com/nowells/django-versions
https://github.com/brosner/django-versioning