Очистка библиотеки из старой миграции 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, если библиотека будет полностью удалена из проекта.
Какой самый безопасный способ удалить ссылку на библиотеку из старой миграции:
Edit the old migration and there change
PQ
toQ
, as the migration will be run by Django 3 which has support for conditional indicesSquashing the migrations to the point where the index creation only appears once, in the newer format
Any other path to removing this library?