从另一个模型中设置默认值的Django模型字段

8

我有一个像这样的模型:

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中获取值,除非提供了其他值。

我应该怎么做?


你不应该这样做。也许考虑重写 ModelB 的 save 方法,从 ModelA 中查找感兴趣的值。 - BottleZero
1个回答

10

您是否希望在创建时将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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接