Django模型根据另一个字段更新计算字段

Sam*_*zon 1 python django

我使用 Django,我想通过使用 SQL 中的计算来更新模型的许多记录,如下所示:

UPDATE table SET amount = pre_tax * 1.2 WHERE amount IS NULL;
Run Code Online (Sandbox Code Playgroud)

我想用 Django ORM 来做到这一点。我没有找到任何方法可以做到这一点。

这个答案Django - Update model field based on another field不使用批量更新,我需要一种允许更新多条记录的语法。

Iai*_*ton 5

您可以使用F表达式.update()一次更新多个记录。该F表达式允许您引用行中的现有值

Model.objects.filter(amount__isnull=True).update(amount=F('pre_tax') * 1.2)
Run Code Online (Sandbox Code Playgroud)