私はそこに復帰があることを知っています.djangoには完全な履歴ブランチがあることを知っています. しかし、django オブジェクトの元の歴史に固執したいと思います。OLD 値と NEW 値も確実に保存する必要があるだけです。
デフォルトでは、django は何が起こったか (更新など) を保存するだけで、値は保存しません。誰でも、djangoのデフォルトの履歴をわずかに強化し、編集されたという事実だけでなく、編集された属性の値も保存する何か(スニペットまたはアプリ)を指摘できます。
今、私の歴史は言う
2012 年 9 月 1 日 12:55:02 変更: 時間
言ってもらいたい
9-01-2012 12:55:02 変更: 6 から 8 までの時間
更新: ==>私のソリューションに興味がある人向け(以下の回答に基づく)..
models.py に HistoryModel(object) クラスを追加しました
class HistoryModel(object): changed_fields = {}
私のモデルのいずれかで継承
古い値を保存する pre_save レシーバーを追加しました。
@receiver(pre_save, sender=Customer) def save_old_values(sender,**kwargs): #dont delete using in eval db_obj = sender.objects.get(pk=kwargs['instance'].pk) for field in kwargs['instance']._meta.fields: if not eval("db_obj." + str(field.get_attname_column()[0])) == eval("kwargs['instance']." + str(field.get_attname_column()[0])): kwargs['instance'].changed_fields[field.get_attname_column()[0]] = "from "+str(eval("db_obj." + str(field.get_attname_column()[0]))) + " to " + str(eval("kwargs['instance']." + str(field.get_attname_column()[0])))
管理者の log_change メソッドを上書きし、object.changed_fields dict を収集してメッセージとして保存しました