2

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

4

2 回答 2

2

忘记 Django 的 ORM(它实际上只是对 SQL 数据库的一个非常薄的包装器),并从关系数据库的角度来思考。在这里,您显然有两个实体:“孩子”和“身高”。您还有以下关系:一个“孩子”有零个、一个或多个“身高”,一个“身高”属于一个“孩子”。这确实转化为一个“孩子”表 kid(+id, name, dob, ...)和一个带有外键的“身高”表kid: height(+id, kid_id, date, value)

如何使用 Django 的 orm 编写这个非常简单,所以我将把它留给你。

于 2018-12-27T15:04:26.920 回答
1

您可以使用简单的历史应用程序。根据文档,您需要向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()

然后所有模型更改将存储在单独的表中。您可以在代码中使用此字段或使用管理员视图来检查历史记录并检索.

于 2018-12-27T15:15:26.507 回答