1

この問題に適切なモデル構造がどうあるべきか理解できません(説明を簡単にするための簡略化されたバージョン)

目標は次のとおりです。

  • 必須フィールドを持つPersonモデル
  • 人を追加するときに、オプションで体重と身長の初期値を入力できます(各エントリに1つ、デフォルトは0)
  • 高さや体重の値が更新されると、以前の値がどこかに保存されるため、履歴を表示できます

身長と体重を別々にモデル化して、ForeignKeyによってPersonにリンクできることは知っていますが、一度に複数のエントリを許可することで、管理者のプレゼンテーションが混乱し、ばらばらになります。

または、Personのフィールドとして身長と体重を設定できますか(クリーンなlist_viewを使用し、これらのフィールドをフィールドセットに含めることのメリット)、更新がある場合は、以前の値を別のモデルに保存しますか?次に、このモデルを一覧表示して、ある人の価値観の履歴を表示できます。

どんな助けでも大歓迎です。

4

2 に答える 2

1

ForeignKeysを使用してモデルの高さと重みを設定し、そのフィールドにアクセスするためのプロパティを追加します

class Person(model)
    name = CharField()

    @property
    def weight(self):
        return self.weighthistory.latest().value


class Weight(model):
    value = IntegerField()
    date = DateTimeField()
    person = ForeignKey(Person, related_name="weighthistory")

class Height(model)
    value = IntegerField()
    date = DateTimeField()
    person = ForeignKey(Person)
于 2012-12-02T10:06:39.307 に答える
0

django-reversionはこの機能を提供します。各save()モデルで、変更された値とともに履歴が保存され、すべての変更を一覧表示するだけでなく、以前のバージョンにロールバックできます。

モデルを変更する必要はなく、カスタム管理クラスとの管理統合も付属しています。

低レベルのAPIは、より多くの機能を提供します。

于 2012-12-02T10:13:07.623 に答える