0

プレイヤーが x 時間作業できるオンライン ゲームを設計しています。作業リクエストが来ると、モデルのwork_end(datetime) とwork_hoursフィールドにデータを入力します。player

しかし、作業がいつ終了したかを検出する最良の方法は何でしょうか? workingモデルにフィールドを追加してチェックすることはできますif player.working AND datetime.now() > player.work_endが、各リクエストの後、どこでこれを呼び出す必要がありますか? やり過ぎな気がします。

この種のことを行う標準的な方法は何ですか?

4

1 に答える 1

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

パフォーマンスの点ではあまり賢い解決策ではありませんが、これは実装が非常に簡単で、現在のところ魅力的な方法です。他の回答を自由に提案してください。

于 2013-09-05T15:16:25.860 に答える