2017-06-22 66 views
0

比方說,有一個與唯一約束模型:散裝與唯一性約束創建 - 忽略重複

class A(models.Model): 
    my_unique_value = models.CharField(unique=True) 

我想bulk_create但一些my_unique_value值我插入的是已經在分貝。我希望他們被忽略(未插入)。

什麼是最好的,最有效的方法來實現呢?我不能逐個插入它們,並捕獲異常(它太慢)。我也無法取得所有的首先清理重複。

底層DB是postgres。

+0

你可以粘貼視圖嗎? –

+0

重複的https://stackoverflow.com/questions/12451053/django-bulk-create-with-ignore-rows-that-c​​ause-integrityerror – shubham003

回答

1

您可以使用get_or_create,正如其名稱所示 - 只會在物品不存在時纔會創建,否則會將其取出。您可以放棄提取的項目。

+0

這將不再是*批量*創建(它會使一個查詢每目的)。 – Matt

+0

是的,但考慮到你的限制[一]無法獲取和過濾[b]不想複製,這是最好的選擇。 –