TIM*_*MEX 1 python django frameworks
thechan = Score.objects.filter(content=44)[0:1]
thechan[0].custom_score = 2
thechan[0].save()
Run Code Online (Sandbox Code Playgroud)
我打印报表,它显示一切正常.但是,它并没有节省!
我进入我的数据库,我运行一个简单的SELECT语句..它没有改变!
select custom_score FROM music_score where content_id = 44;
Run Code Online (Sandbox Code Playgroud)
Dav*_*low 12
这里发生的是Score.objects.filter()不返回常规列表,而是返回QuerySet.QuerySets在某些方面表现得像列表,但每次切片时都会得到一个新的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
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因你需要在QuerySet上执行此操作而不是仅使用get(),则可以编写:
thechan = Score.objects.filter(content=44)[0]
thechan.custom_score = 2
thechan.save()
Run Code Online (Sandbox Code Playgroud)
代替.如果您在迭代QuerySet的元素而不是处理单个记录时,这种区别变得更加重要.
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |