将模型字段默认值设置为外键实例的值
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)
在具有两个模型(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)