我有一个产品列表(比如diodoes),它们有一条与它们相关的曲线。 例如,在django模型中存储曲线很多吗?
- 二极管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)
是多对多前进的道路?即使每个二极管对应一条曲线? (但许多点,可能是两个共享相同点的二极管)。
任何意见,提示或工具链接,非常感谢。
你希望增加在曲线或二极管的字段的数量?你真的需要查询“哪些二极管共享同一个点”? –
我不需要查询“哪些二极管共用同一个点”。我不确定我了解“增加字段数”的问题。我可以添加“电压”或“认证”,但这是无关的。我可以有一个简单的曲线(有几点),也可以从供应商那里获得100分。这可能发生。 – Massagran
我的意思是说,如果你有很多领域和JOIN操作,它们会非常浪费。如果你不需要这种灵活性,你可能不需要使用几种模型。 –