首页 > 解决方案 > Django:Save方法在另一个模型中保存总共3行

问题描述

我有2个模型如下:

class particulars(models.Model):
    reportref = models.ForeignKey(reportname,on_delete=models.CASCADE)
    year = models.CharField(max_length=250) 
    sales = models.FloatField(blank=True,null=True,default=0)
    profit = models.FloatField(blank=True,null=True,default=0)
    
    def save(self, *args, **kwargs):
        self.profit = round((self.sales-self.depreciation),2) 
        super(particulars, self).save(*args, **kwargs)
    
    def __str__(self):
        return str(self.year)

class depreciation(models.Model):
    reportn = models.ForeignKey(reportname,on_delete=models.CASCADE)
    asset = models.CharField(max_length=250)
    cost = models.FloatField(blank=True,null=True,default=0)
    rate = models.FloatField(blank=True,null=True,default=10)
    depreciation_1 = models.FloatField(blank=True,null=True)
    wdv1 = models.FloatField(blank=True,null=True)
    depreciation_2 = models.FloatField(blank=True,null=True)
    wdv2 = models.FloatField(blank=True,null=True)
    depreciation_3 = models.FloatField(blank=True,null=True)
    wdv3 = models.FloatField(blank=True,null=True)
    depreciation_4 = models.FloatField(blank=True,null=True)
    wdv4 = models.FloatField(blank=True,null=True)
    depreciation_5 = models.FloatField(blank=True,null=True)
    wdv5 = models.FloatField(blank=True,null=True)
    
    def save(self, *args, **kwargs):
        self.depreciation_1 = round((self.cost*self.rate/100),2)
        self.wdv1 = round((self.cost-self.depreciation_1),2)
        self.depreciation_2 = round((self.wdv1*self.rate/100),2)
        self.wdv2 = round((self.wdv1-self.depreciation_2),2)
        self.depreciation_3 = round((self.wdv2*self.rate/100),2)
        self.wdv3 = round((self.wdv2-self.depreciation_3),2)
        self.depreciation_4 = round((self.wdv3*self.rate/100),2)
        self.wdv4 = round((self.wdv3-self.depreciation_4),2)
        self.depreciation_5 = round((self.wdv4*self.rate/100),2)
        self.wdv5 = round((self.wdv4-self.depreciation_5),2)  
        super(depreciation, self).save(*args, **kwargs)
    
    def __str__(self):
        return str(self.asset)

每当用户投入资产成本时,我已经编写了 save 方法来更新每年的折旧。但是,我还需要更新具有每年折旧的详细信息模型。我想要得到的是每年每项资产的折旧总额,并将其放在明细表中。有什么办法吗?

标签: djangodjango-models

解决方案


推荐阅读