2017-06-07 72 views
0

我有这样一个模型:从另一个模型默认值的Django模型场

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=???) 

,我想fo2采取从一个值ModelA除非另有提供。

我该怎么做?

+0

你不应该这样做的方式。也许可以考虑重写ModelB的保存方法,它从ModelA中查找感兴趣的值。 – Bott0610

回答

1

是否要在创建时将默认值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) 
相关问题