2017-06-22 13 views
0

を無視するのがユニーク制約を持つモデルがあります言ってみましょう:バルクは、固有の制約で作成する - 重複

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

私がしたようbulk_createしたいが、私は挿入するよmy_unique_value値のいくつかは、DBに既にあります。私はそれらを無視する(挿入しない)ようにします。

これを達成する最も効率的な方法は何ですか?私はそれらを1つずつ挿入することはできませんし、例外をキャッチする(それは遅すぎます)。私はまた、最初にクリーンな重複をすべて取得することはできません。

基礎となるDBはポストグルです。

+0

どこに貼り付けることができますか? –

+0

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

答えて

1

get_or_createを使用できます。名前が示すように、アイテムが存在しない場合にのみ作成されます。存在しない場合は作成されます。それ以外の場合は、フェッチされます。取得したアイテムは破棄できます。

+0

これはもはや* bulk * createにはなりません(これは1つのクエリを作成します)。オブジェクト)。 – Matt

+0

はい、しかしあなたの制限が与えられていれば、[a]はフェッチできず、[b]は複製したくありません。これは利用可能な最良のオプションです。 –

関連する問題