Фиксаторы не работают после сквошмиграции Django

Я только что создал много миграций в Django 4.0.x. Теперь при запуске миграций я получаю следующую ошибку:

  File "/opt/hostedtoolcache/Python/3.9.10/x64/lib/python3.9/site-packages/Django-4.0.3-py3.9.egg/django/db/migrations/loader.py", line 120, in load_disk

    migration_module = import_module(migration_path)

  File "/opt/hostedtoolcache/Python/3.9.10/x64/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)

  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 846, in exec_module
  File "<frozen importlib._bootstrap_external>", line 983, in get_code
  File "<frozen importlib._bootstrap_external>", line 913, in source_to_code
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/runner/work/backend/backend/general/migrations/0001_squashed_0019_merge_0018_auto_20220226_2311_0018_auto_20220228_2343.py", line 42
    code=general.migrations.0004_initial_general.Migration.load_data,
                                ^
SyntaxError: invalid decimal literal

Соответствующие строки кода в файле миграции следующие:

        migrations.RunPython(
            code=general.migrations.0004_initial_general.Migration.load_data,
        ),

Я совсем запутался.

Как я смог найти в этой ссылке https://stackoverflow.com/a/59813844/17881270. Идентификаторы Python не могут начинаться с числа.

Надеюсь, это может вам помочь. Переименуйте их в таблице миграции и в той директории и ваш сквош. Или вы можете использовать функцию getattr.

Посмотрите на верхнюю часть вашего скомканного файла миграции - вы должны найти комментарий примерно следующего содержания:

# Functions from the following migrations need manual copying.
# Move them and any dependencies into this file, then update the
# RunPython operations to refer to the local versions:
# general.migrations.0004_initial_general

Вы также должны были увидеть уведомление выведенное на консоль при генерации миграций, предупреждающее о необходимости ручной модификации сгенерированного файла.

Это происходит потому, что вы определили некоторые пользовательские функции миграции в этой миграции, которые Django не смог перенести автоматически. Вам нужно вручную скопировать функцию load_data из 0004_initial_general.py в этот скомканный файл миграции, а затем заменить ссылку на нее в вызове RunPython.

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