通过过滤器为django模型更新多个字段

时间:2017-09-19 15:59:32

标签: python django django-models

我定义了以下模型:

class User(models.Model):
    userid = models.CharField(max_length=26,unique=True)
    coins = models.IntegerField()
    points = models.IntegerField()
    language = models.CharField(max_length=3)

现在,我想运行一个过滤查询,并为匹配我的查询的所有用户更新硬币和点数。

但是,我一定有问题,因为字段值不会以这种方式更新(我没有收到错误消息):

User.objects.filter(language='en', points__gte=score).update(coins='100', points='10')

更新我选择的字段的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

虽然语句似乎是正确的,但应该通过integers而不是strings

您可以尝试这种方式:

users=User.objects.filter(language='en', points__gte=score)

现在,

for user in users:
    user.coins = 100
    user.points=10
    user.save()

已经有一个名为bultin User模型,因此您应该尝试将其作为模型名称使用。

答案 1 :(得分:0)

您以正确的方式使用update。但是在下面的问题中可能最终会出现一些问题。

您的模型包含以下字段:

coins = models.IntegerField()
points = models.IntegerField()
你注意到了什么吗?它们是整数字段。 也许你可以通过这个微小的改变再次尝试你的陈述:

User.objects.filter(
    language='en', points__gte=score
).update(
    coins=100, points=10
)

传递整数而不是字符串!