Django:使用来自另一个模型的值填充模型的字段(在init和save中)

时间:2014-08-15 12:43:58

标签: django django-models foreign-keys

我有2个型号(例如)。

class A(models.Model):
    name = models.CharField()

class B(models.Model):
    a = models.ForeignKey(A)
    my_name = models.CharField()

所以,我想创建(并更新)B实例的字段my_name,其中包含与其实例相关的A实例的字段name(一个到许多关系)。

我试过了:

class B(models.Model):
    ....
    def __init__(self, *args, **kwargs):
       self.my_name = self.a.name

但是我得到了错误:

AttributeError
Exception Value:    
'B' object has no attribute 'a_id'

我认为这与Django为外键字段添加_id有关,所以我尝试过:

class B(models.Model):
    a = models.ForeignKey(A, db_column="a")
    ...

但是我也遇到了同样的错误。

我对Django很新。 THX!

1 个答案:

答案 0 :(得分:4)

尝试覆盖save模型上的B方法:

class B(models.Model):
    a = models.ForeignKey(A)
    my_name = models.CharField()

    def save(self, *args, **kwargs):
        self.my_name = self.a.name
        super(B, self).save(*args, **kwargs)