Django模型字段,具有来自另一个模型的默认值

时间:2017-06-07 19:13:45

标签: django python-3.x django-models

我有一个这样的模型:

class ModelA(models.Model):
    foo = models.CharField(max_length=255)
    bar = models.CharField(max_length=255)

现在我想要这样的事情:

class ModelB(models.Model):
    aaa = models.ForeignKey(ModelA)
    tar = models.Char(Field(max_length=255, default="")
    fo2 = models.CharField(max_length=255, default=???)

我希望fo2ModelA获取值,除非提供其他值。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您希望fo2的默认值等于创建时与aaa的特定实例相关的内容吗?

这样做的方法是覆盖save方法

class ModelB(models.Model):
    aaa = models.ForeignKey(ModelA)
    tar = models.Char(Field(max_length=255, default="")
    fo2 = models.CharField(max_length=255)

    def save(self, *args, **kwargs):
        if self.fo2 is None:
            self.fo2 = self.aaa._value_taken_from_Model_A
        super(ModelB, self).save(*args, **kwargs)