Django:使用来自另一个模型的值填充模型的字段(在初始化和保存时)

The*_*Phi 0 django foreign-keys django-models

我有2个模型(例如)。

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

class B(models.Model):
    a = models.ForeignKey(A)
    my_name = models.CharField()
Run Code Online (Sandbox Code Playgroud)

因此,我想创建(和更新)my_nameB实例的字段name,以及它所关联的A实例的字段(一对多关系)。

我试过了:

class B(models.Model):
    ....
    def __init__(self, *args, **kwargs):
       self.my_name = self.a.name
Run Code Online (Sandbox Code Playgroud)

但是我有错误:

AttributeError
Exception Value:    
'B' object has no attribute 'a_id'
Run Code Online (Sandbox Code Playgroud)

我认为这与Django _id为外键字段添加一个有关,因此我尝试了:

class B(models.Model):
    a = models.ForeignKey(A, db_column="a")
    ...
Run Code Online (Sandbox Code Playgroud)

但是我有同样的错误。

我是Django的新手。谢谢!

crh*_*des 5

尝试覆盖模型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)
Run Code Online (Sandbox Code Playgroud)