我正在尝试从多个 API 导入数据,但可能会出现重复。我正在尝试批量创建而不重复。所有 API 来源都没有为我提供唯一标识符。我想知道处理这种情况的最佳方法是什么。我尝试过的如下:
if 'rounds' in response:
print('=== Syncing Rounds ===')
rounds = response.get('rounds')
objs = [
Round(
name = item.get('name'),
season = Season.objects.get(id = item.get('seasonId')),
competition = Competition.objects.get(id = item.get('competitionId')),
round_number = item.get('roundNumber'),
)
for item in rounds
]
Round.objects.bulk_create(
objs,update_conflicts=True,
update_fields=['name','season','competition','round_number'],
unique_fields=['id'])
我尝试设置
ignore_conflicts = True
,但这种方法对我没有帮助。
整数范围为1-30,季节为年份。在给定的情况下,我不能使一个字段唯一,例如回合数、季节或比赛。它必须寻找所有三个。例如,2023 年第 1 轮比赛 112 只能有一行。整个组合都是独一无二的。
最终目标是确保没有重复条目或更新现有行。
一个 hack(如 OP 所说)解决方案是在多列唯一约束 Django 上批量插入