Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中批量创建具有多对多关系的对象_Django_Bulkinsert_Django Orm - Fatal编程技术网

在Django中批量创建具有多对多关系的对象

在Django中批量创建具有多对多关系的对象,django,bulkinsert,django-orm,Django,Bulkinsert,Django Orm,我有联系人和联系人两种型号 联系人包含作为m2m关系的组 class ContactGroup(models.Model): contact_group = models.ManyToManyField(ContactGroup, null=True, related_name="contact_list") 联系人是另一种模式 我想在模型上添加联系人组的位置创建批量联系人 group_list = [] if group: groups = [item.strip() f

我有联系人和联系人两种型号

联系人包含作为m2m关系的组

class ContactGroup(models.Model):
    contact_group   = models.ManyToManyField(ContactGroup, null=True, related_name="contact_list")
联系人是另一种模式

我想在模型上添加联系人组的位置创建批量联系人

group_list = []

if group:
   groups = [item.strip() for item in group.split(',')]
   for item in groups:
     try:
        group, created = ContactGroup.objects.get_or_create(account=account, name=item)
        group_list.append(group)
     except :
        pass
contact = Contacts(
         name = name,
         phone = change_phone_format(phone),
         email = email,
         address = address,
         company = company,
         website = website,
         notes = notes,
         dob = dob,
         account = account
                )
bulk_obj.append(contact)
bulk_group.append(group_list)

ThroughModel = Contacts.contact_group.through

now_date = datetime.datetime.now()
Contacts.objects.bulk_create(bulk_obj)
contacts = Contacts.objects.filter(created_on__gte=now_date)
bulk_through = []
for i, item in enumerate(contacts):
    for gr in bulk_group[i]:
       if item and gr:
          bulk_through.append(ThroughModel(contactgroup_id=item.pk, contacts_id=gr.pk))
ThroughModel.objects.bulk_create(bulk_through)
但显示出错误

IntegrityError at /contact-manager/contacts/process/goIKlkpymfWCaFeiQXwp/

(1452, 'Cannot add or update a child row: a foreign key constraint fails (`sparrow`.`contactmanager_contacts_contact_group`, CONSTRAINT `D3781be41803f836ec292e41ed99c16a` FOREIGN KEY (`contactgroup_id`) REFERENCES `contactmanager_contactgroup` (`id`))')

有什么解决办法吗?

也许这有帮助,将最后一行改为:

bulk_through.append(ThroughModel(contactgroup_id=gr.pk, contacts_id=item.pk))

在我看来,变量是混合的。

永远,永远,永远,永远,除了:pass。那太可怕了。首先,你绝不能执行空白操作,除非你知道你可以处理的异常,然后你绝不能让它们静音。
bulk\u create()
返回创建的对象,这样你就可以保存数据库调用,只需执行
contacts=contacts.objects.bulk\u create(bulk\u obj)