基于状态django模型的Updata数据

时间:2016-07-16 03:28:37

标签: python django

我目前正在创建一个模型,其中一个字段是百分比。我想根据状态更新百分比字段。

这是我的models.py

class Contact(models.Model):

    STATUS = (
        ('NY','Not Yet'),
        ('RN','Running'),
        ('CO','Completed'),
    )


    status = models.CharField(max_length=2, choices=STATUS, default='NY')
    percentage = models.FloatField()

    if status == 'CO':
         percentage = 100
    else:
         percentage = 0

这不起作用或不保存。

2 个答案:

答案 0 :(得分:2)

如果您只是将percentage字段用于显示目的,则无需将其设为真实字段。我会这样做:

class Contact(models.Model):
    STATUS = (
        ('NY','Not Yet'),
        ('RN','Running'),
        ('CO','Completed'),
    )

    status = models.CharField(max_length=2, choices=STATUS, default='NY')

    @property
    def percentage(self):
        if self.status == 'CO':
            return 100
        else:
            return 0

但如果你真的希望它成为一个领域,你可以做一些类似于Kapil Sachdev的答案。

答案 1 :(得分:1)

覆盖模型的保存方法并将逻辑放在那里。

class Contact(models.Model):

    STATUS = (
        ('NY','Not Yet'),
        ('RN','Running'),
        ('CO','Completed'),
    )


    status = models.CharField(max_length=2, choices=STATUS, default='NY')
    percentage = models.FloatField()


    def save(self, *args, **kwargs):
        if self.status == 'CO':
            self.percentage = 100
        else:
            self.percentage = 0
        super(Contact, self).save(*args, **kwargs) # Call the "real" save() method.