Python 基于状态django模型更新数据
我目前正在创建一个模型,其中一个字段是百分比。我想根据状态更新百分比字段 这是我的模特Python 基于状态django模型更新数据,python,django,Python,Django,我目前正在创建一个模型,其中一个字段是百分比。我想根据状态更新百分比字段 这是我的模特 class Contact(models.Model): STATUS = ( ('NY','Not Yet'), ('RN','Running'), ('CO','Completed'), ) status = models.CharField(max_length=2, choices=STATUS, default='NY')
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
这不起作用或不保存。覆盖模型的保存方法,并将逻辑放在其中
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.
重写模型的save方法并将逻辑放在其中
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.
如果您只是为了显示目的而使用
百分比
字段,则不需要将其设置为实际字段。我会这样做:
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的答案那样做。如果你只是为了显示而使用
百分比
字段,你不需要让它成为一个真正的字段。我会这样做:
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的答案那样做。在
save
方法中,status
应该是self.status
和percentage
应该是self.percentage
Oh Yes@Nick,谢谢:)。编辑了我的答案。非常感谢。这正是我一直在寻找的。我可以使用不同的方法名称吗?因为def save(self)
与我使用的其他方法有冲突。您正在覆盖模型的save()
方法,并且模型的save()
方法只能有一个。冲突在哪里?在save
方法中,status
应该是self.status
和percentage
应该是self.percentage
Oh Yes@Nick,谢谢:)。编辑了我的答案。非常感谢。这正是我一直在寻找的。我可以使用不同的方法名称吗?因为def save(self)
与我使用的其他方法有冲突。您正在覆盖模型的save()
方法,并且模型的save()
方法只能有一个。冲突在哪里?这很好。但是对于这个问题,我将使用Kapil Sachdev的答案,但是你的答案对我的另一个问题非常有帮助。非常感谢。这太好了。但是对于这个问题,我将使用Kapil Sachdev的答案,但是你的答案对我的另一个问题非常有帮助。多谢各位