0

何かを達成するためにさまざまなマイルストーンのリストを生成したいのですが、それぞれの期限は、ユーザーが指定した最終日から動的に計算されます。

これを処理する最善の方法についてはわかりません。私の頭に浮かんだ最初のアイデアは、すべてのステップを生成するために必要な情報を含むテンプレート(ここでは django テンプレートではありません) ファイルをサーバーに書き込むことです。マイルストーン クラスのマイルストーン オブジェクト (django の一般的なモデル)。たぶん json で書かれたもの:

{"some_step":
  {
  "start_date" = "final_date-10",
  "end_date" = "final_date-7",
  }
}

および対応するモデル

class Milestone(models.Model):
    name = models.Charfield()
    start_date = models.DateField()
    end_date = models.DateField()

    def time_to_final(self,time):
        return self.final_date-time

「finaldate-10」のような文字列は、データベース内の新しいユーザーのデータを初期化するときに、何らかのルーチンによって変換され、登録時に time_to_final メソッドに渡されます。

ただし、それが最善のアプローチであるかどうかはわかりません。何百万人もの人々が使用するわけではありませんが、サーバーのパフォーマンスに悪影響を与える可能性が心配ですか? より良い、おそらくよりpythonicな方法はありますか?

より明確にするためにEDIT:

ユーザーは、日付 D0 に何かを完了したいと考えています。

私のアプリは次のようなステップを生成します:

  • 日付 D1i から日付 D1f までステップ 1 を実行します。
  • ステップ 2 を日付 D2i から日付 D2f まで実行 -...
  • 日付 D0 に到達し、すべてのタスクが完了するまで

D0 が提供されると、すべての日付が計算されます。すべてのステップは、すべてのユーザーに対して生成されます。

4

1 に答える 1

2

テンプレートはこれと何の関係がありますか?最初にモデルを設計します-多分あなたはへの外部キーとへの外部キーを持つモデルを必要としStepsます(あるいはそうではないかもしれません-あなたの説明からはわかりません)。UserMilestone

データが明確になったら、テンプレートなどについて考え始めてください。

djangoの優れている点は、モデルを作成したら、管理インターフェースを使用してデータを入力できることです。問題を正しくモデル化したかどうかがすぐに明らかになります。

パフォーマンスについて心配する必要はありません。データ構造を明確にし、機能させ、十分な速度で実行されていない場合は(可能性は低いですが)最適化します。

于 2012-05-22T22:22:34.680 に答える