私はテキストベースのブラウザゲームを作成しており、djangoモデル構造についてのアドバイスが必要です。すべての例は同じプロジェクトのものですから、上から下にすべての質問を読んだと仮定して同じ情報を繰り返すことはありません。私のプロジェクトのDjangoモデル構造
最初の質問
私はすべてのプレイヤーが参加する労働組合との両方の選手とのための報酬を表しmedals
アプリに関する情報を保持しているユーザ・プロファイル(Player
モデル)が含まれていauth
アプリ、alliance
アプリを持っています同盟。
メダルを割り当てることができるので、Player
とAlliance
のモデルのM2MフィールドをMedal
にリンクすることができます。
別のオプションでは、medals
アプリを他のどのプロジェクトでも使用できます。このアプローチには、Player
またはAlliance
のいずれかにリンクするMedal
モデルの汎用関係の使用が含まれます。
どちらのソリューションがもっとジャンゴ様ですか、したいですか?
2番目の質問
達成するプレーヤーのためのタスクがあります。タスクのシナリオは大きく異なります。したがって、タスクごとに固有のタスク進捗チェックコードを書くには、何らかのアプローチが必要です。
タスクは、報酬に関する情報を含むデータベースに保持されます(これはほとんど同じです)。各タスクに固有のコードはどこに書くべきですか?たぶん私はいくつかのフィールドを追加し、後でそれらを評価する必要がありますか?すべての情報はDBに保存されます。
さらに、タスクではいくつかのトラッキングが必要です。たとえば、手動セクションに行くという簡単な作業を想像してください(プレイヤーがどこにいるかを知るためです)。次に、プレイヤーがマニュアルページを訪問したかどうかをどこかに登録する必要があります。私は別のモデルTaskTrackers
タスクのアプリケーションで作成すると思います。その後、別の質問が発生します。 OneToOneフィールドをPlayer
からTaskTrackers
に、またはその逆に追加する必要がある場合は、
まとめると、主な問題は、私は、ユーザー・プロファイル・モデルにOneToOneFields/M2Mフィールドを追加したり、Userモデルに対象モデルからOneToOneFields/Foreigneysを追加するかどうかですか?後者は私のアプリをより再利用可能にしますが、最初のアプローチはもっと論理的かもしれません。
回答を待っています。
ところで、Django認証を使用する場合は、アプリ "auth"を呼び出すことはお勧めできません。それは 'auth'と呼ばれ、同じ名前を持つ2つのアプリはあまりよくありません(例えば' manage.py test auth')。 – DrTyrsa