Я думаю, что вы забыли слово поля в заголовке.=) Думаю, я бы использовал подход, который оставляет исходную модель нетронутой.Что-то, начинающееся с:
class DjangoPony(models.Model):
name = models.TextField()
color = models.TextField()
class RevisionControlledValue(models.Model):
created = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User)
value = models.TextField()
field = models.CharField(max_length=20)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
Это предполагает, что вы будете использовать его только для TextFields.Чтобы сделать его действительно красивым, вы можете создать новое поле, скажем, ReversionTextField
, которое автоматически создает объект реверсии при сохранении модели.