Ускорение работы 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 список и, соответственно, время проверки.

Есть ли более эффективный способ просто пропускать дубликаты при массовой вставке?

Вернуться на верх