我正在django中创建一个社交媒体网站,其中每个用户可以拥有多个帐户,每个帐户都有自己的帖子,朋友等。为了确定加载模板时使用哪个帐户,我已经定义了这个功能:
def get_active_account(request):
for account in Account.objects.filter(user=request.user):
if account.active:
return account
大多数视图会在需要评估当前有效帐户时调用get_active_account
。现在,更改活动帐户时出现问题。在视图中:
def set_active(request, pk):
account = get_object_or_404(Account, pk=pk)
account.set_active()
return redirect('/')
在帐户模型中:
def set_active(self):
for account in Account.objects.filter(user=self.user):
account.active = False
account.save()
self.active = True
self.save()
这似乎什么都不做;引用活动帐户的任何内容仍会显示之前有效的帐户,尝试创建帖子等会在旧帐户下执行。然而,在刷新之后,一切都应该如此。根据我的阅读,这是一个问题,get_active_account
函数评估一次查询集,然后在稍后调用时返回一个缓存版本(尽管这可能是一个完全错误的假设)。如何解决问题,让一切工作无需刷新浏览器?