Django将对象保存在数据库

时间:2017-12-16 13:21:40

标签: python django

首先,我要提一下,我是Python和Django的新手。

我有一个带有sqlite3数据库的Django项目。 我已经创建了几个用于计算一些物理问题的类,我想通过我的网站使用表单来访问这些结果。我之前的方法是将我的类更改为函数,并为我的对象创建多个模型字段。

然后我到达了我的函数输出是2D数组的点,我在模型中保存了一些问题。所以我决定将整个对象存储在数据库中会更容易 - 然后我就不必将我的类更改为函数,以便在Django中使用它。

我在下面的ab表单中使用输入进行计算。 是否可以在我的模型中存储对象? 我做了一个假设的例子,不确定代码是否有效,但希望你明白这一点。

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()

如果不可能,您是否有人建议如何处理计算和结果数据?

致以最诚挚的问候,

勒夫

1 个答案:

答案 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)]

通过这种方式,您可以为每个模型实例访问XY,而无需将其保存在数据库中(如果这是您想要的?)。