View-function在保存模型时失败



我目前正在玩一些自制的在线文本rpg,现在不得不处理一些相当奇怪的问题,我希望这里有人能解决。

当点击某些链接时,我想在模型"字符"中切换一个名为"rp_willing"的布尔字段。为此,我有一个名为'character_toggle_rp_willing'的视图函数。

字段定义:

class Character(models.Model):
    ...
    rp_willing = models.BooleanField(default=False)
    ...

view函数:

@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

好吧,原来我只是从一个错误的角度看。问题不在于我的"character_toggle_rp_willing",因为它保存了字符。但是它重定向到的视图并不从数据库中检索字符数据。相反,它使用存储在会话变量中的数据——旧数据。然后有一个方法被调用,它保存旧的数据,所以最后什么都没有改变。我想我应该找一个好的调试器

相关内容

最新更新