Django bulk_create导致重复条目完整性

2024-09-29 22:37:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

class GeneratedContent(models.Model):
    entity = models.ForeignKey('companies.Entity')
    source_url = models.URLField(max_length=255)
    title = models.CharField(max_length=255, blank=True, null=True)
    desc = models.TextField(blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

    def __str__(self):  
        return self.entity.name +' Content'

然后,我会处理一些URL,然后保存大量这样的对象:

^{pr2}$

我得到以下错误:

django.db.utils.IntegrityError: (1062, "Duplicate entry '19' for key 'PRIMARY'")

我做错什么了?在


Tags: selftrueautomodelsnulllengthnowmax
2条回答

问题是您正在调用create()-它在数据库中创建实例,然后尝试执行bulk_create()。相反,请创建一个未保存的模型实例:

gen_content = GeneratedContent(...)

要为批量创建准备实例,您需要编写

GeneratedContent(
                entity=e,
                desc=entity_status,
                source_url=stat_url,
                crawled=False,
                )

代替

^{pr2}$

之后,您可以调用bulk_create方法。在

例如:

for e in entities:
    ... 
    gen_content = GeneratedContent(
                                   entity=e,
                                   desc=entity_status,
                                   source_url=stat_url,
                                   crawled=False,
                                   )
    gen_content_list.append(gen_content)

GeneratedContent.objects.bulk_create(gen_content_list)

相关问题 更多 >

    热门问题