0

我们的 models.py 中有一个类:

class Score(model.Model):
    score = models.IntegerField()

当答案正确时,我们想调用 score 对象并在我们的 views.py 中更新它:

def answer(request, level_id):
    # next three lines are working for us.
    o = Level.objects.get(id=level_id)
    guess = request.GET.get('guess', '').strip()
    correct = o.answers.filter(value__iexact=guess).exists()

    b = Score.objects.get('score')
    b.score += o.points
    b.save()

我们还没有使用if语句使 b.score += o.points 运行,因为首先我想看看我们是否可以更新 b.score。

class Level(model.Models):
    points = models.IntegerField("Point Value')

我们得到的错误是:

ValueError at /answer/1 too many values to unpack
4

2 回答 2

0

您必须指定要查询的 Score 实例。

假设您之前创建了一个,并且它的主键为 1,您可以使用以下命令访问它:

b = Score.objects.get(pk=1)

或者,如果这是第一次,您可以运行:

b, created = Score.objects.get_or_create(pk=1)

created如果您刚刚创建它,那将是真实的

于 2013-02-21T16:39:19.930 回答
0

尝试这个!

def answer(request, level_id):
    # next three lines are working for us.
    o = Level.objects.get(id=level_id)
    guess = request.GET.get('guess', '').strip()
    correct = o.answers.filter(value__iexact=guess).exists()

    b = Score.objects.get(score)
    b.score += int(o.points)
    b.save()

更新对象时,您缺少保存对象。

    b.save() # should save it
于 2013-02-21T14:23:04.573 回答