繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM