Здесь происходит то, что 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
Если по какой-либо причине вам нужно было сделать это на QuerySet, а не просто с помощью get (), вы можете написать:
thechan = Score.objects.filter(content=44)[0]
thechan.custom_score = 2
thechan.save()
вместо этого. Это различие становится немного более важным, если, скажем, вы перебираете элементы QuerySet вместо того, чтобы работать с одной записью.