python - 在 Django DB 中存储值更改
问题描述
我在 Django 模型中记录价格历史数据,并希望在它发生变化时保存该值而不是之前记录的值。
例如,如果我每天检查一次价格,我想要以下...
Time | Price
1 | $10
2 | $10
3 | $12
4 | $15
5 | $15
被记录为...
Time | Price
1 | $10
3 | $12
4 | $15
有没有人有什么建议?
我的models.py文件
class PriceHistory(models.Model):
product_id = models.ForeignKey('Product', on_delete=models.CASCADE)
price = models.DecimalField(max_digits=9, decimal_places=2)
timestamp = models.DateTimeField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.product_id)
我当前将所有行存储到数据库的代码(对于每天使用新价格更新的数据框的每一行)
ph, created = PriceHistory.objects.update_or_create(
product_id=row.product_id,
defaults={
"timestamp": timezone.now(),
"price": row.price_current,
}
)
解决方案
你试过了get_or_create
吗?如果它已经存在,它将不会创建新项目
obj, created = PriceHistory.objects.get_or_create(
product_id=row.product_id,
price=row.price_current,
defaults={"timestamp": timezone.now()},
)
推荐阅读
- macos - 将 CPLEX 升级到学术许可证 Mac
- python - 在 python 上设置 hebi 机器人
- java - 错误:无法找到或加载主类 sun.applet.AppletViewer。引起:java.lang.ClassNotFoundException:sun.applet.AppletViewer
- c# - Oauth 2.0 | 水疗 | id_token 是如何伪装成 access_token 来访问受限网络资源的?
- git - 根据扩展名将 git repo 文件移动到子文件夹
- docker - Docker 命令不做任何事情
- javascript - HTML5 画布:不绘图
- if-statement - 如何以最小份额的价值要求特定份额的海龟?
- css - Ionic 3:图像文件未加载到设备中
- php - 包含字符串的变量没有回显任何内容