在Django模型实例中初始化其他对象并传递模型实例

时间:2019-08-12 08:35:42

标签: python django

某些计算变得太复杂而无法在模型中维护,因此我决定将它们移出并在几个类和模块中破坏代码。

我想在模型实例中使用一个类作为外观,以将数据传递给它。

它是从模型实例构造的:

class Calculator:

    def __init__(self, field1: date, field2: float):
        self.field1= field1
        self.field2 = field2

    @classmethod
    def from_django_model(cls, django_model_instance):
        field1 = django_model_instance.field1
        field2 = float(django_model_instance.field2)

目前,我在模型的每个属性中都这样调用它:


class DjangoModel(models.Model):
    # initialize the calculator
    def calculator(self, group):
        return calculator.Calculator.from_django_model(self)

    # use it
    @cached_property
    def calculated_field(self):

        try:
            return self.calculator().calculation_method
        except AttributeError:
            return "Field not set!"

我觉得这不是一个好的解决方案,因为现在我在多种方法中多次初始化计算器对象。

我想在模型初始化时构造一次,然后将其传递给模型实例。 我尝试使用模型管理器执行此操作,但是模型实例不可用。

0 个答案:

没有答案