thechan = Score.objects.filter(content=44)[0:1]
thechan[0].custom_score = 2
thechan[0].save()
我做打印报表,它显示一切正常。 但是,它不节能!
我进入我的数据库,我运行一个简单的SELECT statement..and它没有改变!
select custom_score FROM music_score where content_id = 44;
thechan = Score.objects.filter(content=44)[0:1]
thechan[0].custom_score = 2
thechan[0].save()
我做打印报表,它显示一切正常。 但是,它不节能!
我进入我的数据库,我运行一个简单的SELECT statement..and它没有改变!
select custom_score FROM music_score where content_id = 44;
这是怎么回事这里是Score.objects.filter()不返回常规列表,而是一个查询集 。 查询集表现得像在某些方面名单,但每次你切一次你得到一个新的QuerySet实例,每次您索引到一个,你会得到你的模型类的新实例。
这意味着你原来的代码确实是这样的:
thechan = Score.objects.filter(content=44)[0:1]
thechan[0].custom_score = 2
thechan = Score.objects.filter(content=44)[0:1]
thechan[0].save() # saves an unmodified object back to the DB, no effective change
如果出于某种原因,你需要做的这对一个QuerySet而不是仅仅使用get(),你可以写:
thechan = Score.objects.filter(content=44)[0]
thechan.custom_score = 2
thechan.save()
代替。 这种区别变得有点更重要的,如果你是,比如说,遍历一个QuerySet而不是处理单个记录的元素。
固定。
thechan = Score.objects.get(content=44)
thechan.custom_score = 2
thechan.save()