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