某些计算变得太复杂而无法在模型中维护,因此我决定将它们移出并在几个类和模块中破坏代码。
我想在模型实例中使用一个类作为外观,以将数据传递给它。
它是从模型实例构造的:
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!"
我觉得这不是一个好的解决方案,因为现在我在多种方法中多次初始化计算器对象。
我想在模型初始化时构造一次,然后将其传递给模型实例。 我尝试使用模型管理器执行此操作,但是模型实例不可用。