Удаление миграции Django, которая зависит от настраиваемого поля из старого модуля

У меня есть приложение Django 1.8, начальная миграция которого зависит от django-interval-field, например:

import interval.fields

migrations.CreateModel(
    name='Item',
    fields=[
        ...
        ('estimated_time', interval.fields.IntervalField(null=True, blank=True)),

С тех пор я перенес это поле, чтобы использовать встроенный в Django DurationField, и я больше не использую этот модуль, но мне нужно сохранить его в файле requirements.txt, чтобы мои миграции выполнялись.

Однако этот модуль выдает ошибки при попытке обновления до Django 1.9. Кроме того, я не могу держать этот модуль вечно. Было бы неплохо избавиться от него.

Я пытался сжать миграции, но сжатая миграция по-прежнему содержит оператор import interval.fields и создает поле интервала. Все сквоширование объединяет все в один файл.

Может кто-нибудь сказать мне, как перейти к удалению этого модуля?

Приложение Django, о котором идет речь, находится здесь.


person nnyby    schedule 30.01.2016    source источник


Ответы (2)


Так что ваше раздавливание - это не настоящее раздавливание

  1. Удалите этот пакет из requirements.txt
  2. Удалите import interval.fields из models.py
  3. Измените свой interval.fields.IntervalField(xxx) на какой-либо тип, доступный в Django, в соответствующем my_app_label/migrations/1234_some_migrations.py
  4. Сделанный
person micfan    schedule 30.01.2016

Во всех файлах миграции найдите все объявления interval.fields.IntervalField (для рассматриваемого поля модели) и замените на IntegerField.

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

person Ramast    schedule 30.01.2016