Python 使用相关对象中的数据创建模型实例

Python 使用相关对象中的数据创建模型实例,python,django,django-models,Python,Django,Django Models,我有以下两种型号(一对一关系): 我想在添加新公司时自动创建InvoicingData模型实例。我想用信号来做到这一点: @receiver(post_save, sender=Company) def create_invoicing_data(sender, instance, created, **kwargs): if created: # WHAT HERE? 有没有简单、自动的方法将共享字段值从一个模型复制到另一个模型?@receiver(post\u sa

我有以下两种型号(一对一关系):

我想在添加新公司时自动创建InvoicingData模型实例。我想用信号来做到这一点:

@receiver(post_save, sender=Company)
def create_invoicing_data(sender, instance, created, **kwargs):
    if created:
        # WHAT HERE?
有没有简单、自动的方法将共享字段值从一个模型复制到另一个模型?

@receiver(post\u save,sender=Company)
def创建发票数据(发送方、实例、已创建、**kwargs):
如果创建:
invdata=发票数据(公司=实例)
#如果需要,在invdata上设置任何其他字段
invdata.save()
@receiver(保存后,发送方=公司)
def创建发票数据(发送方、实例、已创建、**kwargs):
如果创建:
invdata=发票数据(公司=实例)
#如果需要,在invdata上设置任何其他字段
invdata.save()
@receiver(保存后,发送方=公司)
def创建发票数据(发送方、实例、已创建、**kwargs):
如果创建:
invdata=发票数据(公司=实例)
#如果需要,在invdata上设置任何其他字段
invdata.save()
@receiver(保存后,发送方=公司)
def创建发票数据(发送方、实例、已创建、**kwargs):
如果创建:
invdata=发票数据(公司=实例)
#如果需要,在invdata上设置任何其他字段
invdata.save()

您可以使用
Model.\u meta
获取字段名列表:

@receiver(post_save, sender=Company)
def create_invoicing_data(sender, instance, created, **kwargs):
    if created:

        invoice_fields = InvoicingData._meta.get_all_field_names()

        data = dict((field_name, getattr(instance, field_name))
                       for field_name in Company._meta.get_all_field_names()
                       if field_name != 'id' and field_name in invoice_fields)

        InvoicingData.objects.create(company=instance,
                                     company_name=instance.name,
                                     **data)

您可以使用
Model.\u meta
获取字段名列表:

@receiver(post_save, sender=Company)
def create_invoicing_data(sender, instance, created, **kwargs):
    if created:

        invoice_fields = InvoicingData._meta.get_all_field_names()

        data = dict((field_name, getattr(instance, field_name))
                       for field_name in Company._meta.get_all_field_names()
                       if field_name != 'id' and field_name in invoice_fields)

        InvoicingData.objects.create(company=instance,
                                     company_name=instance.name,
                                     **data)

您可以使用
Model.\u meta
获取字段名列表:

@receiver(post_save, sender=Company)
def create_invoicing_data(sender, instance, created, **kwargs):
    if created:

        invoice_fields = InvoicingData._meta.get_all_field_names()

        data = dict((field_name, getattr(instance, field_name))
                       for field_name in Company._meta.get_all_field_names()
                       if field_name != 'id' and field_name in invoice_fields)

        InvoicingData.objects.create(company=instance,
                                     company_name=instance.name,
                                     **data)

您可以使用
Model.\u meta
获取字段名列表:

@receiver(post_save, sender=Company)
def create_invoicing_data(sender, instance, created, **kwargs):
    if created:

        invoice_fields = InvoicingData._meta.get_all_field_names()

        data = dict((field_name, getattr(instance, field_name))
                       for field_name in Company._meta.get_all_field_names()
                       if field_name != 'id' and field_name in invoice_fields)

        InvoicingData.objects.create(company=instance,
                                     company_name=instance.name,
                                     **data)

我还需要复制所有其他字段(地址等),您可以使用@catavaran下面的答案,或者简单地手动设置字段,例如invdata.address\u city=instance.address\u city等。在我的情况下,这似乎是一个更简单的解决方案。谢谢我还需要复制所有其他字段(地址等),您可以使用@catavaran下面的答案,或者简单地手动设置字段,例如invdata.address\u city=instance.address\u city等。在我的情况下,这似乎是一个更简单的解决方案。谢谢我还需要复制所有其他字段(地址等),您可以使用@catavaran下面的答案,或者简单地手动设置字段,例如invdata.address\u city=instance.address\u city等。在我的情况下,这似乎是一个更简单的解决方案。谢谢我还需要复制所有其他字段(地址等),您可以使用@catavaran下面的答案,或者简单地手动设置字段,例如invdata.address\u city=instance.address\u city等。在我的情况下,这似乎是一个更简单的解决方案。谢谢