我定义了以下模型:
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')
更新我选择的字段的正确方法是什么?
答案 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
)
传递整数而不是字符串!