アップデート
機能リクエストを提出しました。アイデアはpass
、データベースに既に存在するレコードを拒否するかIntegrittyError
、データベースによって生成されることです。unique
unique_together
私は次のモデルを持っています:
class Compositions(models.Model):
composer_key = models.ForeignKey(
Composer,
)
composition = models.CharField(
max_length=383,
)
class Meta(object):
unique_together = (('composer_key', 'composition'), )
管理インターフェイスで django-import-export を使用し、csv ファイルに for each エントリを指定せずid
に ... csv ファイルの 1 つのペアが既に存在する場合、手順は整合性エラーで中断されます。
duplicate key value violates unique constraint "data_compositions_composer_key_id_12f91ce7dbac16bf_uniq"
DETAIL: Key (composer_key_id, composition)=(2, Star Wars) already exists.
CSV ファイルは次のとおりです。
id composer_key composition
1 Hot Stuff
2 Star Wars
アイデアは、管理者でそれを使用skip_row
して実装することでした。
admin.py:
class CompositionsResource(resources.ModelResource):
class Meta:
model = Compositions
skip_unchanged = True
report_skipped = True
class CompositionsAdmin(ImportExportModelAdmin):
resource_class = CompositionsResource
admin.site.register(Compositions, CompositionsAdmin)
ただし、各行が特定のデータベース エントリと同じかどうかをチェックするために csv ファイルに が必要skip_row
なため、これで問題が解決するわけではありません。id
unique
( )を使用すると、この制御がデータベースによって実行できることを考えると、_together
このエラーをキャッチしてから、skip_row = True
または代わりpass
にこのエラーを返すことは効果的ではないでしょうか?