2017-05-26 435 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(...)