Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Django存储历史数据_Python_Django_Sqlite_Historical Db - Fatal编程技术网

Python 如何使用Django存储历史数据

Python 如何使用Django存储历史数据,python,django,sqlite,historical-db,Python,Django,Sqlite,Historical Db,我是Django的新手,我正在尝试找出如何存储历史数据,并能够引用过去某个日期的任何数据点。假设我想存储一个孩子在成长过程中身高变化的数据,并能够比较他在第400天和第6xx天的身高。我要如何在Django建立这个?身高和孩子之间是否需要外键关系?忘掉Django的ORM(它实际上只是SQL数据库的一个很薄的包装器),从关系数据库的角度考虑。这里有两个实体:“孩子”和“身高”。你也有以下关系:一个“孩子”有零、一个或多个“身高”,一个“身高”属于一个“孩子”。这实际上转化为一个“kid”表kid

我是Django的新手,我正在尝试找出如何存储历史数据,并能够引用过去某个日期的任何数据点。假设我想存储一个孩子在成长过程中身高变化的数据,并能够比较他在第400天和第6xx天的身高。我要如何在Django建立这个?身高和孩子之间是否需要外键关系?

忘掉Django的ORM(它实际上只是SQL数据库的一个很薄的包装器),从关系数据库的角度考虑。这里有两个实体:“孩子”和“身高”。你也有以下关系:一个“孩子”有零、一个或多个“身高”,一个“身高”属于一个“孩子”。这实际上转化为一个“kid”表
kid(+id,name,dob,…)
和一个外键位于
kid
上的“height”表:
height(+id,kid\id,date,value)

如何使用Django的orm编写这篇文章非常困难,所以我将把它留给您。

您可以使用这个应用程序。 根据需要,您需要将
历史记录
字段添加到模型中:

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()
然后,所有模型更改都将存储在单独的表中。
您可以在代码中使用此字段,也可以使用管理员视图检查历史记录和。

这是基本的关系数据库建模,没有特定于Python或Django的内容。我对该库有一个问题-当您
.save()时
模型实例-它将整个实例保存在
历史记录中
还是仅保存上次更新的时间?您可以在通过HR更新之前获取此实例的早期版本?文档中写得不清楚。@Chiefir是的,它保存了整个实例,可以保存。@Chiefir您能检查这个解决方案吗?我没有测试这个解决方案,只是好奇这个库是如何工作的。如果我需要此功能,将来可能会使用它:)