首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在django模型中存储一条曲线作为多个单元吗?

在django模型中存储一条曲线作为多个单元吗?
EN

Stack Overflow用户
提问于 2012-10-23 16:17:33
回答 2查看 139关注 0票数 0

我有一个产品列表(比如二极管),它有一个与它们相关的曲线。例如,

  • 二极管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)。我也会绘制它,所以视图将不得不拉出值。

我的第一次尝试有各种限制:

  • 对于I在范围(101):name_sects = "x",str(i+1)吸引“.join(Name_sects)=models.DecimalField(”.join(str(i+1 ),‘A’),max_digits=6)吸引‘强度’=model.DecimalField(‘Diode强度’))二极管=类型(‘二极管’,(models.Model,),吸引子)

好的,这会为每个"x",x1,x2,……创建一个字段。等等,我可以填写管理员的每个"y“.但是,如何在视图或模板中操作它并不明显。(显然,这是一种需要填补的痛苦)

  • 天真尝试2 #model.py类曲线(models.Model) x_axis = models.PositiveIntegerField( .)y_axis = models.DecimalField(…)类二极管(models.Model)名称= blah,blah强度=model.DecimalField(‘Diode强度’),characteristic_curve =model.ManyToManyField(曲线)

ManyToMany是前进的方向吗?即使每个二极管对应一条曲线?(但很多点,可能是两个二极管共用一个点)。

任何建议,提示或链接的工具,是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-23 16:23:50

如果您想提高速度(因为每个产品有100个条目,这真的很大,如果您必须获取100个产品和它们的点数,它会很慢),我将使用泡菜模块并将您的元组列表存储在一个TextField中(如果字符串长度不改变,则可能是CharField )。

代码语言:javascript
运行
复制
>>> a = [(1,2),(3,4),(5,6),(7,8)]
>>> pickle.dumps(a)
'(lp0\n(I1\nI2\ntp1\na(I3\nI4\ntp2\na(I5\nI6\ntp3\na(I7\nI8\ntp4\na.'
>>> b = pickle.dumps(a)
>>> pickle.loads(b)
[(1, 2), (3, 4), (5, 6), (7, 8)]

只需将b存储在您的TextField中,您就可以很容易地获得您的列表。

更好的是,正如Robert所说,使用http://pypi.python.org/pypi/django-picklefield

票数 1
EN

Stack Overflow用户

发布于 2012-10-23 16:24:26

我喜欢你的第二种方法,但只是一个小小的建议。

代码语言:javascript
运行
复制
class Plot(models.Model):
    x_axis = models.PositiveIntegerField( ...)
    y_axis = models.DecimalField( ...)

class Curve(models.Model)
   plots = models.ManyToManyField(Plot)

class Diode(models.Model)
    name = blah, blah
    intensity = model.DecimalField(_('Diode Intensity'), blah, blah)
    curve = models.ForeignKey(Curve)

只是一个小小的灵活性建议

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13034922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档