为什么我的Django应用程序模型的Field值没有变化?

时间:2012-10-21 01:50:04

标签: python django

我正在开发一个类似于教程的基本Django应用程序。我尝试在创建和保存之后更改轮询的值,但我不能。我已经尝试使用.commit()作为.save()的替代而不是editable=true,但这也不起作用。这是我尝试从shell更改内容时的样子。通过HTML(即失败)时的类似结果。有什么建议?我已经尝试将模型中字段的属性更改为>>> 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' ,这不会导致任何错误,但也没有帮助。有什么想法可以在这里发生吗?

{{1}}

2 个答案:

答案 0 :(得分:2)

每次调用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()

答案 1 :(得分:2)

解释托马斯的评论。

将polls.objects.all [2]分配给变量,然后更改该对象的title属性并保存。

>>> poll = polls.objects.all[2]
>>> poll.title = 'best album'
>>> poll.save()