为什么我不能保存在Django的对象?(Why can't I save an object

2019-10-17 19:14发布

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;

Answer 1:

这是怎么回事这里是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而不是处理单个记录的元素。



Answer 2:

固定。

thechan = Score.objects.get(content=44)
thechan.custom_score = 2
thechan.save()


文章来源: Why can't I save an object in Django?