2

私のモデルは次のようになります

class MyModel(models.Model):
    end_time = DateTimeField()

これが私が達成しようとしているものです:

m=MyModel.objects.get(pk=1)
m.end_time += timedelta(seconds=34)
m.save()

しかし、競合状態を避けるために update() でそれをやりたい:

MyModel.objects.filter(pk=1).update(end_time=F('end_time')+timedelta(seconds=34))

しかし、うまくいきません。これはdjango ORMで可能ですか、それとも生のSQLが唯一のオプションですか?

4

1 に答える 1

2

これは完全に可能です。end_time のキャッシュされた値を見ているかどうかはわかりませんが、実行したばかりのテストを次に示します。

>>> e = Estimate.objects.get(pk=17)
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 8)
>>> Estimate.objects.filter(pk=17).update(departure_date=F('departure_date')+timedelta(seconds=34))
1
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 8)
>>> e = Estimate.objects.get(pk=17)
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 42)
于 2010-10-02T00:26:25.073 に答える