Django在数据库中保存对象

问题描述 投票:1回答:1

首先,我应该提一下,我是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()

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

最好的祝福,

约阿希姆

python django
1个回答
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,而不需要将它保存在数据库中(如果这是你想要的?)。

© www.soinside.com 2019 - 2024. All rights reserved.