Как хранить исторические данные, используя Django - PullRequest
0 голосов
/ 27 декабря 2018

Я новичок в Django и пытаюсь выяснить, как хранить исторические данные и иметь возможность ссылаться на любую точку данных с даты в прошлом.Скажем, я хочу хранить данные об изменении роста ребенка по мере его роста и иметь возможность сравнить его рост в день 400 с его ростом в день 6xx.Как бы я настроил это в Джанго?Должны ли быть внешние отношения между ростом и ребенком?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вы можете использовать Простая история приложение.В соответствии с документами вам необходимо добавить в вашу модель поле 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()

И тогда все изменения модели будут сохранены в отдельной таблице.Вы можете использовать это поле в коде или использовать представления администратора для проверки исторических записей и извлечения .

0 голосов
/ 27 декабря 2018

Забудьте об ORM Django (который на самом деле является просто очень тонкой оболочкой вашей базы данных SQL) и подумайте о терминах реляционной базы данных.Здесь у вас очевидно есть две сущности: «малыш» и «рост».У вас также есть следующие отношения: «ребенок» имеет ноль, один или несколько «рост», «рост» принадлежит одному «ребенку».Это действительно переводит к «детской» таблице kid(+id, name, dob, ...) и к таблице «высоты» с внешним ключом на kid: height(+id, kid_id, date, value).

Как написать это, используя форму Джанго, довольно просто, поэтому я 'оставлю это тебе.

...