我有一個產品列表(比如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操作,它們會非常浪費。如果你不需要這種靈活性,你可能不需要使用幾種模型。 –