基本上我想做的是:
class A(models.Model):
a_number = models.FloatField()
class B(models.Model):
a = models.ForeignKey(A)
b = models.FloatField(default=self.a.a_number)
我知道在定义变量时我不能使用self,但是有一个解决方法吗?如果'a_number'是方法而不是变量怎么办?
我知道我可以在B中制作这样的方法:
def b(self):
return self.a.a_number
但是当我在B中创建对象时,我需要获得'a_number'的值,所以这不起作用。
答案 0 :(得分:0)
实施clean() method以设置b
的默认值。
class B(models.Model):
a = models.ForeignKey(A)
b = models.FloatField()
def clean(self):
if self.b is None:
self.b = self.a.a_number
上面链接的Django文档建议clean()
作为自动为字段提供值的方法:
Model.clean()
此方法应用于提供自定义模型验证,以及 如果需要,修改模型上的属性。例如,你可以 用它来自动为字段提供值,或者做 验证需要访问多个字段:
(example omitted)
在模型上调用clean()
之前,请务必致电save()
。如果您使用Django管理站点,则在该站点上创建或更新对象时会自动调用clean()
。