我目前正在玩一些自制的在线Text-RPG,现在必须处理一些非常奇怪的问题,我希望有人能在这里解决。
我想在点击某些链接时在模型'Character'中切换一个名为'rp_willing'的布尔字段。为此,我有一个名为'character_toggle_rp_willing'的视图函数。
字段定义:
class Character(models.Model):
...
rp_willing = models.BooleanField(default=False)
...
视图功能:
@decorators.login_required
def character_toggle_rp_willing(request, id):
character = get_object_or_404(Character, pk=id)
character.rp_willing = not character.rp_willing
character.save()
return redirect(request.META.get('HTTP_REFERER','/accounts/overview'))
它通过它的id从数据库中查询有问题的字符。然后切换'rp_willing'并在函数重定向回上一页之前保存字符。
现在的问题似乎在于'character.save()'的调用。我已经放置了一些打印功能用于调试目的,其他一切似乎按预期工作。此外,如果从同一个应用程序的模板调用,整个函数绝对正确。但是如果模板来自不同的应用程序,则不会执行保存功能。没有任何例外可以提供任何提示。我真的不知道,在这种情况下如何调试。我找不到内置save() - 函数的代码。
save() - 函数是否与传递的请求有某种关系?还是有些东西我忽略了?
编辑: Dev-Server说的是什么......
按预期工作:
[28/Aug/2011 17:06:53] "GET /accounts/overview HTTP/1.1" 200 2283
[28/Aug/2011 17:06:59] "GET /accounts/character/toggle_rp_willing/1/ HTTP/1.1" 302 0
[28/Aug/2011 17:06:59] "GET /accounts/overview HTTP/1.1" 200 2285
保存失败:
[28/Aug/2011 17:03:26] "GET /village/ HTTP/1.1" 200 1531
[28/Aug/2011 17:03:28] "GET /accounts/character/toggle_rp_willing/1/ HTTP/1.1" 302 0
[28/Aug/2011 17:03:28] "GET /village/ HTTP/1.1" 200 1531
答案 0 :(得分:0)
好吧,原来我只是从一个错误的角度看。问题不在于我的'character_toggle_rp_willing',因为它可以保存角色。但它重定向到的视图不会从数据库中检索字符数据。相反,它使用存储在会话变量中的数据 - 旧数据。然后有一个叫做的方法,它可以保存旧数据,所以最后没有任何变化......我想我应该找一个好的调试器。