Python Django:如何使用相关模型自动填充字段';s场
我有两个基本模型:Python Django:如何使用相关模型自动填充字段';s场,python,django,Python,Django,我有两个基本模型: class ModelA(models.model): ... #some fields score = models.IntegerField() class ModelB(models.model) ... #some fields related_model=models.OneToOneField(ModelA) score = models.IntegerField(default=related_model.score)
class ModelA(models.model):
... #some fields
score = models.IntegerField()
class ModelB(models.model)
... #some fields
related_model=models.OneToOneField(ModelA)
score = models.IntegerField(default=related_model.score)
我想要的是,在创建ModelB时,它的score字段填充ModelA的score值,它与ModelA有一个OneToOne关系
我尝试设置score=models.IntegerField(默认值=related\u model.score)
但在迁移时,我得到了错误:AttributeError:'OneToOneField'对象没有属性“score”
我还尝试在ModelB下定义一个方法,如下所示,并将其传递给默认值:
def get_score(self, *args, **kwargs):
return self.threat.score
这也不行。
当我设置default=get_score()
时,我得到一个错误:缺少一个必需的位置参数:self
如何将模型的字段自动设置为其相关模型(通过OneTONE关系)字段的字段?您应该在保存时执行此操作
def save(self, *args, **kwargs):
if not self.score:
self.score = self.threat.score
return super().save(*args, **kwargs)
您可以使用
pre_save
信号来完成此操作。@Stevy我有一种预感,一定有一种简单的方法来完成此操作:/makemigration
阶段已通过。但是,当我通过管理面板设置相关模型并将分数留空并按下保存按钮时,我得到错误此字段为必填。
您需要将其设置为blank=True,null=True
。