モデルを更新するためのある種のタイムスタンプが必要です。問題は、mysql のタイムスタンプが 1 秒の精度しかないことです。そのため、auto_add_now で DateTime を使用する場合、これでは十分ではありません。
float フィールドを使用して、更新ごとに time.time() に割り当てることを考えました。これは、QuerySet.update() を使用して更新を使用するモデルです。
model MyModel:
last_update = models.FloatField(default=time.time)
次に、保存する前に last_update を更新します (すべての呼び出しは中央の場所を経由するため、作成時に明示的に行うことができます)。たとえば、次のようになります。
m = MyModel(..,last_update=time.time())
または一括更新を行うとき、
m = MyModel.objects.filter(....).update(last_update_time=time.time())
float と order を保存するこのアプローチに問題はありますか?
明確にするために、私は auto_now=True の DateTimeField オプションを認識しています。問題は、1 秒の解像度である MYSQL の日時フィールドにマップされているため、1 秒の解像度が得られることです (私は MYSQL 5.5 を使用しています)。