Django-使用多种模型方法保持DRY

时间:2015-06-18 11:38:16

标签: django django-models

使用需要其他模型方法结果的模型方法时,保留DRY的首选方法是什么?

例如:

class MyModel(models.Model):
    a = models.IntegerField()
    b = models.IntegerField()
    c = models.IntegerField()

def _method_one(self):
    x = a + b    
    return x    
    method_one = property(_method_one)

def _method_two(self):
    x = a + b
    y = x + c
    return y
    method_two = property(_method_two)

def _method_three(self):
    x = a + b
    y = x + c
    z = x + y
    return z
    method_three = property(_method_three)

随着越来越多的方法依赖于之前的解决方案,我最终会重复代码。什么是最干净的处理方式?

提前致谢。

1 个答案:

答案 0 :(得分:2)

为什么不这样做:

class MyModel(models.Model):
    a = models.IntegerField(default=0)
    b = models.IntegerField(default=0)
    c = models.IntegerField(default=0)

    @property
    def x(self):
        return self.a + self.b

    @property
    def y(self):
        return self.x + self.c

    @property
    def z(self):
        return self.x + self.y