Python Django外键不会更改

Python Django外键不会更改,python,django,Python,Django,我在Django有个有趣的问题。 我想换外键。我的代码: print(todos[ind].list) print(newList) todos[ind].list = newList print(todos[ind].list) todos[ind].save() print(todos[ind].list) 它的输出: oldList newList oldList oldList 我的模型: class Todo(models.Model): name = models.Cha

我在Django有个有趣的问题。 我想换外键。我的代码:

print(todos[ind].list)
print(newList)
todos[ind].list = newList
print(todos[ind].list)
todos[ind].save()
print(todos[ind].list)
它的输出:

oldList
newList
oldList
oldList
我的模型:

class Todo(models.Model):
    name = models.CharField(max_length=255)
    list = models.ForeignKey(TodoList)

    def __str__(self):
        return str(self.name)
和待办事项列表:

todos = Todo.objects.filter(list = ls)
其中,ls和newList为:

ls = TodoList.objects.get(pk = list_id)
newList = TodoList.objects.get(pk = 1)

提前感谢。

todos
是一个类似queryset的列表,但不是真正的列表。每次访问
todos[ind]
时,您都会在数据库中获得点击并加载新的模型实例

因此,请将代码更改为:

todo = todos[ind]

print(todo.list)
print(newList)
todo.list = newList
print(todo.list)
todo.save()
print(todo.list)
或者,您可以将查询集缓存到列表中,然后按索引访问实例,就像您在问题中所做的那样:

todos = list(Todo.objects.filter(list=ls))

print(todos[ind].list)
todos[ind].list = newList
print(todos[ind].list)