簡體   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