我有一个产品列表(比如二极管),它有一个与它们相关的曲线。例如,
因此,对于每个产品,都有一条曲线(具有相同的x轴值range(1,100)),但y轴值不同。
我的问题是,如果我想稍后在视图中(比如曲线下的面积,或者曲线乘以另一条曲线,等等)来计算数据,那么存储这些数据的最佳实践是什么(使用Django + PostgreSql)。我也会绘制它,所以视图将不得不拉出值。
我的第一次尝试有各种限制:
好的,这会为每个"x",x1,x2,……创建一个字段。等等,我可以填写管理员的每个"y“.但是,如何在视图或模板中操作它并不明显。(显然,这是一种需要填补的痛苦)
ManyToMany是前进的方向吗?即使每个二极管对应一条曲线?(但很多点,可能是两个二极管共用一个点)。
任何建议,提示或链接的工具,是非常感谢的。
发布于 2012-10-23 16:23:50
如果您想提高速度(因为每个产品有100个条目,这真的很大,如果您必须获取100个产品和它们的点数,它会很慢),我将使用泡菜模块并将您的元组列表存储在一个TextField中(如果字符串长度不改变,则可能是CharField )。
>>> 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
发布于 2012-10-23 16:24:26
我喜欢你的第二种方法,但只是一个小小的建议。
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)只是一个小小的灵活性建议
https://stackoverflow.com/questions/13034922
复制相似问题