1

我无法弄清楚这个问题的适当模型结构应该是什么(简化版本以使解释更容易)

目标是:

  • 具有必填字段的 Person 模型
  • 添加人员时,您可以选择输入体重和身高的初始值(每个输入一项,默认为 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 回答