モデル定義:
class Footprint(models.Model)
date = models.DateTimeField(auto_now = True)
class Stuff(Footprint):
name = models.CharField(max_length = 255)
some_other_field = models.CharField(max_length = 255)
オブジェクトでは、フィールドのみを更新し、関連付けられたオブジェクトで定義されているものを除いて、他のすべてのフィールドを変更しないでStuff
おきたいと思います。name
Footprint
Footprint
使用しない場合、オブジェクトのフィールドは正しく更新されupdate_fields
ます。
s = Stuff.objects.get(pk = 1)
s.name = 'Alexander'
s.save()
s.date # is correctly set
しかし、更新するフィールドを指定すると、関連付けられたFootprint
ものも保存されません。
s = Stuff.objects.get(pk = 1)
s.name = 'Tim'
s.save(update_fields = ['name'])
s.date # unfortunately, remains unchanged!!
update_fields
複数のスクリプト間の干渉を避けるために使用する必要があります。
同時に、「フットプリント」オブジェクトによって定義された最後の変更を常に追跡したいと思います (これには、最後の変更日と他のいくつかのフィールドが含まれます。それらの更新はカスタムsave()
メソッドによってトリガーされます)。
からのフィールドが含まれていないFootprint.save()
場合でも、強制的に呼び出しを行う方法はありますか?update_fields
Footprint