[英]Set model field default to value from foreign key instance
使用具有两个模型(A和B)的Django应用程序,B有一个字段link
,它是与A的外键关系:
# models.py
class A(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=15)
my_bool = models.BooleanField(default=True)
class B(models.Model):
link = models.ForeignKey(A)
b_bool = models.BooleanField(default=link.my_bool) # Error!
我想对于b_bool
场有联系my_bool
如果没有值作为默认 B.b_bool
通过石墨烯突变提供。
目前,使用link.my_bool
作为默认值会在进行迁移时引发以下错误:
AttributeError: 'ForeignKey' object has no attribute 'my_bool'
我不认为它会像那样工作。 相反,尝试重写save()
方法:
class B(models.Model):
link = models.ForeignKey(A)
b_bool = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if not self.b_bool:
self.b_bool = self.link.my_bool
super(B, self).save(*args, **kwargs)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.