【发布时间】:2019-09-14 10:53:29
【问题描述】:
我尝试在 django 模型层的模型“基础”中引用模型“现货”的“现货价格”,我该如何管理?
我设计了 view.py 来自动渲染模板。所以我无法修改任何 view.py 来选择像“models.B.objects.get().field”这样的数据。
还有,str设置为表示日期,所以,在django后台管理中,'spot'字段显示会是'date'格式,怎么改成'spot_price' ?
模型现货
class Spot(models.Model):
date = models.DateField(primary_key=True)
spot_price = models.FloatField(blank=True, null=True)
def __str__(self):
return str(self.date) if self.date else ''
需要按日期引用模型Spot的spot_price,因为日期是唯一的但spot_price不是
class Basis(models.Model):
date = models.DateField(primary_key=True)
major_future_contract_close_price = models.FloatField(blank=True)
spot = models.OneToOneField(Spot, on_delete=models.CASCADE)
basis = models.FloatField(default=calculate_basis)
def __str__(self):
return str(self.date) if self.date else ''
def calculate_basis(self):
return abs(self.major_future_contract_close_price -
self.spot.spot_price)
我预计 Basis.query.data 会喜欢“日期:2019-04-25,major_future_contract_close_price:100.0,现货:96.5,基础:3.5”
【问题讨论】:
-
您想在
Basis中仅为OneToOneField更改Spotstr 吗?calculate_basis需要参考spot_price吗? -
没错,我在这个
Basis模型中只需要spot_price,而在其他模型中,我更喜欢date作为str。calculate_basis需要spot_price模型中的Spot字段。 -
calculate_basis在同一date中同时引用spot_price和major_future_contract_close_price
标签: python django model foreign-keys one-to-one