2015-06-18 26 views
1

使用需要另一種模型方法結果的模型方法時,保持DRY的首選方式是什麼?Django使用多種模型方法保持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) 

隨着越來越多的方法依賴於前兩者的解決方案,我結束了重複的代碼。什麼是最簡單的方法來處理這個問題?

在此先感謝。

回答

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 
+0

謝謝!我早就嘗試過,但由於某種原因,它對我沒有任何作用。我一定是做錯了什麼,但是這正如我所期望的那樣工作。 –

+0

這些字段的默認值很重要,否則會出錯。總是防守編碼,即使對你自己:) – Brandon

+0

很高興知道!我將開始在我的模型上實現它們。謝謝你的幫助! –