我正在设计一款玩家可以工作x小时的在线游戏。当工作请求到来时,我会填充work_end
模型的work_hours
(日期时间)和player
字段。
但是什么是检测工作何时结束的最佳方式?我可以在我的模型中添加working
字段并检查if player.working AND datetime.now() > player.work_end
但是在每次请求后我还应该在哪里调用它?我觉得这太过分了。
做这种事情的标准方法是什么?
答案 0 :(得分:0)
由于没有其他答案,我将解释我是如何完成它的。我在每个请求之后调用了我提到的方法(将用户更新为当前时间)但我对我的方式感到满意。
我在我的播放器应用中创建了一个名为UpdatePlayerMiddleware
的中间件,在settings.py中我将其嵌入到其他中间件中。
class UpdatePlayerMiddleware(object):
def process_request(self, request):
if request.user.is_authenticated():
request.user.get_profile().update_player()
return None
虽然在性能方面它不是一个非常聪明的解决方案,但这很容易实现,而且它现在就像一个魅力。随意提出其他答案。