2013-09-05 6 views
0

Je suis en train de concevoir un jeu en ligne dans lequel les joueurs peuvent travailler pendant x heures. Lorsque la demande de travail vient, je remplis les champs work_end (datetime) et work_hours de mon modèle player.Comment implémenter un mécanisme de type déclencheur?

Mais quelle serait la meilleure façon de détecter quand le travail se termine? Je peux ajouter un champ working à mon modèle et vérifier if player.working AND datetime.now() > player.work_end mais là encore où dois-je appeler cela, après chaque demande? Je me sens comme c'est une exagération.

Quelle est la façon standart de faire ce genre de chose?

Répondre

0

Puisqu'il n'y a pas d'autres réponses, je vais vous expliquer comment je l'ai accompli. J'ai appelé la méthode que j'ai mentionnée après chaque requête (qui met à jour l'utilisateur à l'heure actuelle) Mais je suis content de la façon dont je l'ai fait.

J'ai créé un middleware appelé UpdatePlayerMiddleware pour mon application de jeu et dans settings.py je l'ai intégré avec d'autres middlewares.

class UpdatePlayerMiddleware(object): 
    def process_request(self, request): 
     if request.user.is_authenticated(): 
      request.user.get_profile().update_player() 
     return None 

Bien-sage performances, il est pas une solution très intelligente, ce qui est très facile à mettre en œuvre, et il fonctionne comme un charme actuellement. N'hésitez pas à proposer d'autres réponses.

Questions connexes