将模型字段默认值设置为外键实例的值

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)