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

时间:2019-06-09 06:41:59

标签: python django graphene-python

在具有两个模型(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'

1 个答案:

答案 0 :(得分:0)

我认为它不会那样工作。相反,请尝试覆盖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)