2017-05-26 436 views
0

我有以下型号:Django的bulk_create导致重复条目完整性错误

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,然后保存这些对象这样的散装数量:

gen_content_list = [] 
     for e in entities: 
      entity_status = get_tweets(e.twitter_handle()) 

      try: 
       stat_url = re.search("(?P<url>https?://[^\s]+)", entity_status).group("url") 
       gen_content = GeneratedContent.objects.create(
        entity=e, 
        desc=entity_status, 
        source_url=stat_url, 
        crawled=False, 
        ) 
       gen_content_list.append(gen_content) 
       self.stdout.write(self.style.SUCCESS(e.name+' status: '+stat_url.encode('ascii','replace'))) 
      except: 
       pass 
     if gen_content_list: 
      GeneratedContent.objects.bulk_create(gen_content_list) 

我得到以下错误:

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

我在做什么错?

回答

1

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

gen_content = GeneratedContent(...)