python - 为什么我的 Django 应用程序模型的字段值没有改变?

标签 python django

我正在开发一个类似于教程的基本 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/

相关文章:

Django 两列表单

python - 使用xpath获取部分字符串匹配的html标签

django - 我怎样才能删除 Django 中的数据库表?

python - 在 Python 中使用列表理解创建按预定义值排序的二维列表

python - 需要脚本来分析进程转储文件(Windows)

python - views.py 中没有名为 'django.core.context_processors' 的模块

python - Django REST 框架外键和过滤

python - Django 更改根 URL

python - 训练后如何保存/恢复模型?

python - 在 Fabric 任务中使用环境相关的 Django 设置