我想在另一个字段中引用一个字段的值。
我已经尝试过default=self.key_name * 2
,但这是行不通的。
class Pizza_size(models.Model):
length = models.DecimalField(decimal_places=2, default=0)
price = models.DecimalField(decimal_places=2, default=self.length*2)
当我使用Pizza_size
类创建对象时,如果length的值为5,我希望仅通过运行命令Pizza_size(length=5)
将price的值为10。
答案 0 :(得分:1)
根据the docs,“重写内置方法的经典用例是,如果您希望在保存对象时发生某些事情。”
鉴于您似乎要完成的工作,处理此问题的正确方法是覆盖模型的save方法。
这是一个例子:
class Pizza_size(models.Model):
length = models.DecimalField(decimal_places=2, default=0)
price = models.DecimalField(decimal_places=2, default=0)
def save(self, *args, **kwargs):
self.price = self.length*2
super(MyModel, self).save(*args, **kwargs)
另一种选择是使用pre_save信号,但这并不像上面那样简单或标准。