从父-Django保存相关子模型字段

从父-Django保存相关子模型字段,django,python-3.x,Django,Python 3.x,我有这些模型: class MyModel1(models.Model): field1 = models.CharField(max_length=128, blank=True, null=True) fieldrelated1 = models.OneToOneField('MyModel2', max_length=128, blank=True, null=True, related_name='mymodel2') fieldrelated2 = models

我有这些模型:

class MyModel1(models.Model):
    field1 = models.CharField(max_length=128, blank=True, null=True)
    fieldrelated1 = models.OneToOneField('MyModel2', max_length=128, blank=True, null=True, related_name='mymodel2')
    fieldrelated2 = models.OneToOneField('MyModel3', max_length=128, blank=True, null=True, related_name='mymodel3')
    fieldrelated3 = models.OneToOneField('MyModel4', max_length=128, blank=True, null=True, related_name='mymodel4')

class MyModel2(models.Model):
    field2 = models.CharField(max_length=128, blank=True, null=True)
    test = models.CharField(max_length=128, blank=True, null=True)

class MyModel3(models.Model):
    field3 = models.CharField(max_length=128, blank=True, null=True)
    test = models.CharField(max_length=128, blank=True, null=True)

class MyModel4(models.Model):
    field4 = models.CharField(max_length=128, blank=True, null=True)
    test = models.CharField(max_length=128, blank=True, null=True)
我需要的是,当我从
MyModel1
保存记录时,在
MyModel2、MyModel3和MyModel4
上自动创建一个对象。使用来自父级的数据填充某些字段

到目前为止,我有:

def create_child_records(instance, created, rad, **kwargs):
    if not created or rad:
        return

    if not instance.fieldrelated1_id:
        fieldrelated1, _ = MyModel2.objects.get_or_create(field1=field2)
    instance.fieldrelated1 = fieldrelated1

    if not instance.fieldrelated2_id:
        fieldrelated2, _ = MyModel3.objects.get_or_create(field1=field3)
    instance.fieldrelated2 = fieldrelated2

    if not instance.fieldrelated3_id:
        fieldrelated3, _ = MyModel4.objects.get_or_create(field1=field4)
    instance.fieldrelated3 = fieldrelated3

    instance.save()

models.signals.post_save.connect(create_child_records, sender=MyModel1, dispatch_uid='create_child_records')
但当我试图从父母那里拯救时,它让我:

name 'field2' is not defined
此方法位于父模型的末尾,未缩进,如果缩进,则抛出:

ValueError: Invalid model reference MyModel1. String model references must be of the form 'app_label.ModelName'
如果我将发送方模型(MyModel1)放在
''
之间,如:

models.signals.post_save.connect(create_child_records, sender='MyModel1', dispatch_uid='create_child_records')
它抛出:

ValueError: Invalid model reference 'MyModel1'. String model references must be of the form 'app_label.ModelName'.

有什么想法吗?

错误信息非常明确。你试过这个吗:

models.signals.post_save.connect(create_child_records, sender='myapp.MyModel1', dispatch_uid='create_child_records')

另外,函数“创建子记录”包含许多错误:错误的字段名、未定义的变量。

错误消息非常明确。你试过这个吗:

models.signals.post_save.connect(create_child_records, sender='myapp.MyModel1', dispatch_uid='create_child_records')

此外,函数
create\u child\u records
包含许多错误:字段名称错误,变量未定义。

信号中未定义
field2
。也就是说,您正在尝试分配一个尚未在您的上下文/范围中定义的变量,但我可以使用“名称”例如,名称的问题是它实际上未在模型中定义,在这种情况下,我如何定义它们?您的信号中未定义
字段2
。也就是说,您试图分配一个尚未在您的上下文/范围中定义的变量,但我可以使用“name”例如,name的问题是它实际上没有在模型中定义,在这种情况下我如何定义它们?