更新
我已提交功能请求。这个想法是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,而不为id
csv 文件中的每个条目提供一个,...如果一对 csv 文件已经存在,该过程将因完整性错误而中断
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
是在管理员中使用和实现它。
管理员.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
此错误是否有效?