如何实现类似触发器的机制?

时间:2013-09-05 00:08:01

标签: django django-models

我正在设计一款玩家可以工作x小时的在线游戏。当工作请求到来时,我会填充work_end模型的work_hours(日期时间)和player字段。

但是什么是检测工作何时结束的最佳方式?我可以在我的模型中添加working字段并检查if player.working AND datetime.now() > player.work_end但是在每次请求后我还应该在哪里调用它?我觉得这太过分了。

做这种事情的标准方法是什么?

1 个答案:

答案 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

虽然在性能方面它不是一个非常聪明的解决方案,但这很容易实现,而且它现在就像一个魅力。随意提出其他答案。