繁体   English   中英

Django中的模型,当我在admin中编辑一个时如何更改两个值?

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

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 = '项目'

管理员屏幕截图: 当我更改了“ payed_money(已付金额:)”时,“ owe_money(未付金额:)” = sum_money-payed_money,如果sum_money == payed_money,则is_debt = False

我该怎么办? 重写save()方法?

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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