Удаление метода по умолчанию для пользовательских полей в Django

Я реализовал поле в моей модели Django со значением по умолчанию, которое вызывает метод пользовательского класса, который я написал. Я запустил и применил миграции в своем производственном развертывании. Недавно я обнаружил, что поле больше не нужно, и я хочу удалить его и метод пользовательского класса из моей модели:

Код модели:

from django.db import models

class OrganizationConfig(models.Model):
   ...
   def get_sla_default_value():  # type: ignore
        return {
            Priority.STAT: "1:00:00",
            Priority.ASAP: "2:00:00",
            Priority.TIMING_CRITICAL: "6:00:00",
            Priority.PREOPERATIVE: "24:00:00",
            Priority.ROUTINE: "48:00:00",
        }
   ...
   priority_slas = models.JSONField(default=get_sla_default_value)

Миграция:

class Migration(migrations.Migration):

    dependencies = [
        ("core", "0085_alter_hangingprotocol_modality_and_more"),
    ]

    operations = [
        migrations.CreateModel(
            name="OrganizationConfig",
            fields=[
                ...
                (
                    "priority_slas",
                    models.JSONField(
                        default=myapp.core.models.OrganizationConfig.get_sla_default_value
                    ),
                ),
                ...
            ],
        ),
    ]

Однако на метод класса есть ссылка в миграции, созданной, когда я впервые реализовал логику (как показано выше), и удаление метода приводит к ошибке, когда я пытаюсь применить свои миграции:

Traceback (most recent call last):
  File "/app/./manage.py", line 31, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 458, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 106, in wrapper
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 117, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/loader.py", line 58, in __init__
    self.build_graph()
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/loader.py", line 229, in build_graph
    self.load_disk()
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/loader.py", line 120, in load_disk
    migration_module = import_module(migration_path)
  File "/usr/local/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 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/app/myapp/core/migrations/0086_organizationconfig.py", line 8, in <module>
    class Migration(migrations.Migration):
  File "/app/myapp/core/migrations/0086_organizationconfig.py", line 33, in Migration
    default=myapp.core.models.OrganizationConfig.get_sla_default_value
AttributeError: type object 'OrganizationConfig' has no attribute 'get_sla_default_value'

<<<Я не знаю, как отредактировать существующую миграцию, чтобы удалить зависимость от get_sla_default_value(). Мне кажется, что простое удаление секции вызовет проблемы в любых существующих развертываниях. Нужно ли мне просто навсегда сохранить этот мертвый метод в моей модели? Если это полезно, я использую Postgres 13 в качестве базы данных.

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