2016-12-22 30 views
0

我試圖在同一時間執行這兩個操作,但只有一個在一次返回。如果我刪除他們中的任何一個,另一個會被執行。有什麼方法可以讓他們兩個同時工作嗎?我正在談論大概年份和textDeduct。同時在Django的兩個字段進行計算,但只有一個正在執行一次

class Salarie(models.Model): 

    grossmonthlysalary = models.FloatField(
     _('Monthly Salary'), 
     null=False, 
     blank=False, 
     default=0.00 
    ) 

    monthlyincometax = models.FloatField(
     _('Monthly Income Tax'), 
     null=False, 
     blank=False 
    ) 

    contractperiod = models.IntegerField(
     _('Contract Period'), 
     null=False, 
     blank=False 
    ) 

    grossannualsalary = models.FloatField(
     _('Gross Annual Salary'), 
     null=True, 
     blank=True 
    ) 

    taxDeduct = models.FloatField(
     _('Tax Deduction'), 
     null=False, 
     blank=False, 
     default=0.00 
    ) 

    def save(self, *args, **kwargs): 
     self.grossannualsalary = self.grossmonthlysalary * self.contractperiod 
     super(Salarie, self).save(*args, **kwargs) 

    def save(self, *args, **kwargs): 
     self.taxDeduct = self.grossmonthlysalary * self.monthlyincometax/100 
     super(Salarie, self).save(*args, **kwargs) 
+3

爲什麼'grossannualsalary'是一個字段,如果它總是計算的結果呢?爲什麼不把它變成財產? 'taxDeduct'同樣適用於 – Sayse

+2

爲什麼要定義兩次保存方法?你只能有一個名字的方法。爲什麼不把它們放在同一個函數中呢? –

回答

2

我不明白你爲什麼要在一個模型中寫兩個保存方法。請試試這個。

def save(self, *args, **kwargs): 
    self.grossannualsalary = self.grossmonthlysalary * self.contractperiod 
    self.taxDeduct = self.grossmonthlysalary * self.monthlyincometax/100 
    super(Salarie, self).save(*args, **kwargs) 
+0

這還只是一次計算「一次一個」,它不完全清楚(對我來說)實際上試圖做什麼 – Sayse

+0

我同意,如果總的年度報酬和taxDeduct是來自其他模型領域的計算而不是更好寫屬性。 – Darshit

+0

@Darshit很樂意在這種情況下使用財產,請你幫助我將這些代碼轉換爲財產計算。 –

相關問題