【发布时间】:2015-10-31 12:23:27
【问题描述】:
我想在以下模型中一次更新多个整数字段。
class Foo(models.Model):
field_a = models.PositiveIntegerField()
field_b = models.PositiveIntegerField()
field_c = models.PositiveIntegerField()
最初,它可以像下面的代码一样通过两个查询来完成。
foo = Foo.objects.get(id=1)
foo.field_a += 1
foo.field_b -= 1
foo.field_c += 2
foo.save()
我想在一个查询中使用update 使其更简单。
但是,以下尝试引发了错误。
# 1st attempt
Foo.objects.filter(id=1).update(
field_a=F('field_a')+1,
field_b=F('field_a')-1,
field_c=F('field_a')+2)
# 2nd attempt
Foo.objects.filter(id=1).\
update(field_a=F('field_a')+1).\
update(field_b=F('field_b')-1) ).\
update(field_c=F('field_c')+2)
我该如何解决这个问题?
【问题讨论】:
-
尝试 #2 无法确定,因为更新不会返回查询集,而是返回更改的行数。但是尝试#1应该可以工作。您能否添加尝试 #1 获得的堆栈跟踪?
-
抱歉打扰了。再次尝试时,第一次尝试效果很好。最好关闭这个帖子。