Skip to main content
 首页 » 编程设计

python之为什么我不能在 Django 中保存对象

2025年05月04日20telwanggs

thechan = Score.objects.filter(content=44)[0:1] 
thechan[0].custom_score = 2 
thechan[0].save() 

我打印报表,它显示一切正常。然而,这并没有节省!

我进入我的数据库,然后运行一个简单的 SELECT 语句......它没有改变!

select custom_score FROM music_score where content_id = 44; 

请您参考如下方法:

这里发生的事情是 Score.objects.filter() 不返回常规列表,而是返回 QuerySet。 . QuerySet 在某些方面表现得像列表,但每次对一个进行切片时,都会得到一个新的 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 的元素而不是处理单个记录,这种区别就变得更加重要。