Ускорение работы Django bulk_create с уникальными полями [дубликат]
У меня есть база данных с тысячами записей. Каждая запись имеет поле unique, которое я назвал unique_id, и оно вычисляется по некоторым другим полям:
class ModelA(models.Model):
name = models.CharField(max_length=256, help_text="Type a name")
created_at = models.DateTimeField(auto_now_add=True)
unique_id = models.CharField(max_length=256, unique=True, editable=False, default=calculate_my_unique_id)
Вот алгоритм, который я использую для предотвращения дубликатов (опуская часть кода):
objectsToAdd = []
items_dict = ModelA.objects.in_bulk(field_name='unique_id')
unique_id = generate_unique_id()
if unique_id not in items_dict.keys():
objectsToAdd.append(
ModelA(
name=item_name, unique_id=unique_id
)
)
if objectsToAdd:
ModelA.objects.bulk_create(objs=objectsToAdd)
Проблема в том, что когда элементы таблицы растут, растет и item_dict список и, соответственно, время проверки.
Есть ли более эффективный способ просто пропускать дубликаты при массовой вставке?