Django ORM中的更新语句

时间:2018-05-18 11:38:32

标签: sql django django-orm

如何实现sql语句

update table1 
set field1 = field2

使用Django ORM。

2 个答案:

答案 0 :(得分:4)

您可以update()使用F expression

from django.db.models import F
Table1.objects.update(field1=F('field2'))

答案 1 :(得分:3)

如果您的模式Table1包含两个字段,则可以执行以下操作:

Table1.objects.update(field1=F('field2'))

我们在这里使用F-expression,以便我们引用字段,而不是值'field2'。使用F(..)的语句会导致将所有列设置为字符串'field2'(当然,这是可能的,因为field1必须能够存储文本数据)。

使用Table1.objects,我们可以访问Table1的查询集,如果没有进一步指定,则所有对象。请注意,我们将这些加载到内存中。它用于构造查询。

使用.update(..),我们可以更新与查询集对应的行中的数据(此处所有行,但我们也可以进行过滤)。

如前所述,我们不能简单地将'field2'作为值传递。由于ORM将此解释为将所有行的field1设置为字符串 'field2'。我们使用F - 表达式来引用该列。