我正在开发一个类似于教程的基本 Django 应用程序。我尝试在创建和保存 poll 后更改它的值,但我做不到。除了 .save()
之外,我还尝试使用 .commit()
并且这也没有用。这是我尝试从 shell 更改内容时的样子。通过 HTML 时结果类似(即失败)。有什么建议么?我已经尝试将模型中字段的属性更改为 editable=true
,这不会导致任何错误,但也没有帮助。知道这里会发生什么吗?
>>> from votes.models import polls
>>> polls.objects.all()[2].title
u'best band'
>>> polls.objects.all()[2].title='best album'
>>> polls.objects.all()[2].title
u'best band'
>>> polls.objects.all()[2].title='best album'
>>> polls.objects.all()[2].save()
>>> polls.objects.all()[2].title
u'best band'
最佳答案
每次您调用 polls.objects.all()
时,您都会从数据库中获得一个重构对象数组 - 每次您调用 .all()
时,它为您再次从数据库中重建它们,创建一个新副本。您正在修改其中一个,但没有保存您修改过的那个。
你在做什么:
>>> from votes.models import polls
>>> poll = polls.objects.all()[2]
>>> poll.title = 'best album'
>>> poll.title
'best album'
>>> another_copy_of_poll = polls.objects.all()[2]
>>> another_copy_of_poll.title
u'best band'
>>> another_copy_of_poll.save()
你应该做什么:
>>> from votes.models import polls
>>> poll = polls.objects.all()[2]
>>> poll.title = 'best album'
>>> poll.title
'best band'
>>> poll.save()
关于python - 为什么我的 Django 应用程序模型的字段值没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994246/