我目前正在创建一个模型,其中一个字段是百分比。我想根据状态更新百分比字段。
这是我的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
这不起作用或不保存。
答案 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.