首先,我要提一下,我是Python和Django的新手。
我有一个带有sqlite3数据库的Django项目。 我已经创建了几个用于计算一些物理问题的类,我想通过我的网站使用表单来访问这些结果。我之前的方法是将我的类更改为函数,并为我的对象创建多个模型字段。
然后我到达了我的函数输出是2D数组的点,我在模型中保存了一些问题。所以我决定将整个对象存储在数据库中会更容易 - 然后我就不必将我的类更改为函数,以便在Django中使用它。
我在下面的a
和b
表单中使用输入进行计算。
是否可以在我的模型中存储对象?
我做了一个假设的例子,不确定代码是否有效,但希望你明白这一点。
class Butterfly_model(models.Model):
a = models.FloatField(verbose_name='a')
b = models.FloatField(verbose_name='b')
results = >>>Some_Object_Field<<<
我的计算脚本可能包含以下内容:
class Compute:
def __init__(self, a, b):
self.X=[]
self.Y=[]
for i in range(0,a):
self.X.append(i)
self.Y.append(i+b)
我的view.py包含以下内容:
if form_input.is_valid():
instance = form_input.save(commit=False)
instance.results = Compute(instance.a,instance.b)
instance.save()
如果不可能,您是否有人建议如何处理计算和结果数据?
致以最诚挚的问候,
勒夫
答案 0 :(得分:0)
您可能正在寻找的是model properties。从预测您的需求我认为您正在寻找:
您可以向计算函数的模型添加属性。对于你的情况,它会像:
class Butterfly_model(models.Model):
a = models.FloatField(verbose_name='a')
b = models.FloatField(verbose_name='b')
@property
def X(self):
return [i for i in range(0,self.a)]
@property
def Y(self):
return [i+b for i in range(0,self.a)]
通过这种方式,您可以为每个模型实例访问X
和Y
,而无需将其保存在数据库中(如果这是您想要的?)。