如何实现sql语句
update table1
set field1 = field2
使用Django ORM。
答案 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
- 表达式来引用该列。