我有一个产品列表(比如二极管),它们有一条与之相关的曲线。例如,
- 二极管 1:曲线 1:[(0,1),(1,3),(2,10), ...., (100,0.5)]
- 二极管 2:曲线 2:[(0,2),(1,4),(2.1,19), ..., (100,0)]
因此,对于每个产品,都有一条曲线(具有相同的 x 轴值range(1,100)
)但不同的 y 轴值。
我的问题是存储此类数据(使用 Django + PostgreSql)的最佳实践是什么,因为我想稍后在视图中用它计算事物(比如曲线下的区域,或者曲线与另一个曲线相乘等)。我还将绘制图表,因此视图必须提取值。
我的第一次尝试有各种限制:
天真的尝试 1
# model.py for i in range(101): name_sects = ["x", str(i+1)] attrs["".join(name_sects)] = models.DecimalField(_("".join([str(i+1),' A'])), max_digits=6) attrs['intensity'] = model.DecimalField(_('Diode Intensity')) Diode = type('Diode', (models.Model,), attrs)
好的,这为每个“x”、x1、x2、...等创建了一个字段,我可以在管理员中填写每个“y”...但是如何在视图或模板中操作它并不明显。(显然,要填写很痛苦)
天真的尝试 2
#model.py class Curve(models.Model) x_axis = models.PositiveIntegerField( ...) y_axis = models.DecimalField( ...) class Diode(models.Model) name = blah, blah intensity = model.DecimalField(_('Diode Intensity'), blah, blah) characteristic_curve = model.ManyToManyField(Curve)
多对多是前进的方向吗?即使每个二极管对应一条曲线?(但很多点,可能两个二极管共享同一个点)。
非常感谢任何建议、提示或工具链接。