时间序列数据的 Django 模型

标签 django database django-models time-series

我和我的 friend 们构建了一个买卖股票的应用程序,我们希望在一天结束时保留我们拥有的每只股票的历史价格。 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 模型访问所有内容。开始reading here .

为此,选择数据库的类型并不重要。如果您没有偏好,请使用 PostgreSQL。

关于时间序列数据的 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51154957/

相关文章:

python - 如何在Django admin中使用ContentTypes的两个应用程序之间的ForeignKey上使用filter_horizo​​ntal?

python - 我们如何在 Django 中拥有多个身份验证系统?

Django-tables2 - 如何在 TemplateColumn 中使用自定义过滤器

python - 使用带有前缀 View 名称的 Django HyperlinkedModelSerializer

Laravel 中具有两个外键字段的一对多数据库

java - Hibernate 在运行时创建表

python - Django - 保持原始方法的工作并添加新的自定义验证

php - 我怎样才能让我的数据库在这个 "foreach"循环中使用 PHP 更新不止一次?

python - 有没有办法根据值查询Django中的枚举类型?

python - 获取跨越关系的对象的计数