Django:视图功能在保存模型时失败

时间:2011-08-27 13:28:45

标签: django django-models

我目前正在玩一些自制的在线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

1 个答案:

答案 0 :(得分:0)

好吧,原来我只是从一个错误的角度看。问题不在于我的'character_toggle_rp_willing',因为它可以保存角色。但它重定向到的视图不会从数据库中检索字符数据。相反,它使用存储在会话变量中的数据 - 旧数据。然后有一个叫做的方法,它可以保存旧数据,所以最后没有任何变化......我想我应该找一个好的调试器。

相关问题