我正在开发一个类似于教程的基本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}}
答案 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()