简体   繁体   中英

model in django,how to change two value when I edit one in admin?

in models.py :

class Projects(models.Model):
    # 项目名称
    pro_name = models.CharField('项目名称',max_length=50)
    # 项目内容
    # content = models.CharField('项目内容',max_length=200)
    content = models.TextField('项目内容', max_length=200)
    # 外键
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    # 金额
    sum_money = models.IntegerField('项目金额',default=0)
    # 付款
    payed_money = models.IntegerField('已付金额',default=0)
    # 欠钱
    owe_money = models.IntegerField('未付金额',default=0)
    # 是否欠钱
    is_debt = models.BooleanField('是否欠账',default=True)

    # 发布日期
    pub_date = models.DateTimeField('保存日期',default=timezone.now,)
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    def __str__(self):
        return self.pro_name
    class Meta:
        verbose_name = '项目'
        verbose_name_plural = '项目'

admin screen capture: when I changed the 'payed_money(已付金额:)' the 'owe_money(未付金额:)' = sum_money - payed_money, and if sum_money == payed_money the is_debt = False

what should I do? rewrite save() mehtod?

class Projects(models.Model):
    # 项目名称
    pro_name = models.CharField('项目名称',max_length=50)
    ...
    class Meta:
        verbose_name = '项目'
        verbose_name_plural = '项目'

    def save(self, *args, **kwargs):
        if not self.pk:
            # 新增 add
            if self.payed_money != 0:
                self.owe_money = self.sum_money - self.payed_money
                if self.owe_money <= 0:
                    self.is_debt = False
        else:
            # 修改 change
            this = Projects.objects.get(id=self.id)
            if this.payed_money != self.payed_money:
                self.owe_money = self.sum_money - self.payed_money
                if self.owe_money <= 0:
                    self.is_debt = False
        return super(Projects, self).save(*args, **kwargs)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM