Очистка библиотеки из старой миграции Django

У меня есть миграция Django, которая использовала библиотеку partial-index. Это довольно старая миграция в давно работающем проекте, созданная до того, как Django поддерживал частичные индексы, и теперь мне нужно обновить проект с Django 2.2 до Django 3.2.

Библиотека partial-index больше не нужна, так как Django теперь поддерживает частичные индексы.

Более того, эта библиотека содержит код, который, похоже, не работает с Django 3, поскольку структуры модели изменились (в частности, это касается исключения FieldDoesNotExist).

Я пытаюсь обновить старый частичный индекс до нового формата Django, используя систему условий, описанную здесь https://docs.djangoproject.com/en/2.2/ref/models/indexes/#condition

Само изменение простое, оно включает в себя изменение определения индекса в модели с

indexes = [Index(fields=['round'], name='round_index', condition=PQ(removed_at__isnull=True))]

to

indexes = [Index(fields=['round'], name='round_index', condition=Q(removed_at__isnull=True))]

(обратите внимание на изменение PQ с partial-index на Q, который является собственной конструкцией Django)

В результате происходит миграция, в ходе которой индекс удаляется и создается заново, где все выглядит нормально.

Однако более ранняя миграция, в которой этот индекс был создан изначально, импортировала библиотеку частичного индекса для ссылки на объект PQ. Это приведет к ошибке ImportError, если библиотека будет полностью удалена из проекта.

Какой самый безопасный способ удалить ссылку на библиотеку из старой миграции:

  1. Edit the old migration and there change PQ to Q, as the migration will be run by Django 3 which has support for conditional indices

  2. Squashing the migrations to the point where the index creation only appears once, in the newer format

  3. Any other path to removing this library?

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