我是Django的新手,正在尝试弄清楚如何存储历史数据并能够引用过去某个日期的任何数据点。假设我想存储有关孩子成长时身高变化的数据,并能够比较他在400天时的身高和6xx天时的身高。我将如何在Django中进行设置?身高和孩子之间是否需要外键关系?
答案 0 :(得分:0)
忘记Django的ORM(实际上只是SQL数据库的一个非常薄的包装),而从关系数据库的角度考虑。在这里,您显然有两个实体:“孩子”和“身高”。您还具有以下关系:一个“孩子”具有零个,一个或多个“高度”,一个“高度”属于一个单独的“孩子”。实际上,这转化为“ {kid”表kid(+id, name, dob, ...)
和“ height”表,在kid
上带有外键:height(+id, kid_id, date, value)
。
如何使用Django的orm编写此代码很简单,所以我将其留给您。
答案 1 :(得分:0)
您可以使用simple history应用。
根据{{3}},您需要在模型中添加一个HistoricalRecords
字段:
from django.db import models
from simple_history.models import HistoricalRecords
class Kid(models.Model):
id = models.IntegerField(primary_key=True)
height = models.IntegerField()
history = HistoricalRecords()
然后所有模型更改将存储在单独的表中。 您可以在代码中使用此字段,也可以使用管理员视图检查历史记录和docs。