django - 时间序列数据的 Django 模型
问题描述
我和我的朋友构建了一个买卖股票的应用程序,我们希望在一天结束时保留我们拥有的每只股票的历史价格。3 个最重要的字段是股票代码、价格和日期。
例如:
01/01/2018 - Bought Stock A, record price of Stock A at end of day(EOD)
01/02/2018 - Did nothing, record price of Stock A at EOD
01/03/2018 - Bought Stock B, record price of Stock A and Stock B at EOD
01/04/2018 - Sell Stock A, record price of Stock B at EOD
我们正在使用 Django 来构建模型。每天我们都会记录我们拥有的每只股票的价格。本组数据仅供外部使用,不会对外公开。
我最初的研究告诉我,拥有一个历史价格表并将每只股票的每个价格存储为一行并不理想。我不确定使用 Django 时最好的方法是什么。存储所有这些数据的 Django 模型是什么样的,我们应该使用 MYSQL 吗?
解决方案
您分为 3 个数据模型:
- 股票模型,具有历史、当前价格和数量以及元数据的链接
- 购买历史模型
- 价格历史模型
这三个与库存模型中的外键链接。示例代码:
from django.db import models
from django.util.translation import ugettext_lazy as _
from datetime import date
class StockAsset(models.Model):
symbol = models.CharField(max_length=5)
amount = models.PositiveIntegerField()
price = models.FloatField()
class PurchaseHistory(models.Model):
BUY = 1
SELL = 2
ACTION_CHOICES = (
(BUY, _('buy')),
(SELL, _('sell')),
)
action = models.PositiveIntegerField(choices=ACTION_CHOICES)
action_date = models.DateTimeField(auto_now_add=True)
stock = models.ForeignKey(StockAsset,
on_delete=models.CASCADE, related_name='purchases'
)
class PriceHistory(models.Model):
stock = models.ForeignKey(StockAsset, on_delete=models.CASCADE, related_name='price_history')
price_date = models.DateField(default=date.today)
这样您就可以从 StockAsset 模型中访问所有内容。从这里开始阅读。
为此,选择的数据库类型并不重要。如果您没有偏好,请使用 PostgreSQL。
推荐阅读
- python - 加载图像并在其上显示 3D 形状的 2D 投影
- ios - swift 5 是否支持从 .HEIC 图像格式中提取深度数据?
- java - 在 Spring 中检查自动装配代理的 instanceof
- android - 如果不是 zygote,哪个组件会将事件和意图传递给我们的应用程序?
- c++ - 使用函数将用户字符串输入的元音替换为另一个输入字符
- amazon-web-services - 无法删除 DocumentDB,因为它在不兼容的网络中
- reactjs - Next.js 提升状态
- javascript - PHP header('location: index.php') 工作但不显示
- angular - 在角度模板中有条件地应用多个 css 规则的替代语法?
- java - 使用 Hibernate 构建动态查询(无 Criteria API)