Переименование первичного ключа Django

Я пытаюсь переименовать поле первичного ключа модели Django, но получаю django.db.utils.ProgrammingError: column "new_name" of relation "my_app_mymodel" does not exist.

Модель выглядит примерно так:

from django.db import models as django_db_models

class MyModel(django_db_models.Model):
    old_name = django_db_fields.BigAutoField(
                   null=False,
                   primary_key=True,
                   auto_created=True,
                   unique=True,
               )

А миграции это:

# Generated by Django 3.2.6 on 2022-10-03 15:33

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('my_app', '0007_previous_migration'),
    ]

    operations = [
        migrations.RenameField(
            model_name='mymodel',
            old_name='old_name',
            new_name='new_name',
        ),
    ]

Не уверен, что я делаю неправильно. Есть идеи?

P.S: Я не знаю, связано ли это, но есть внешние ключи от других таблиц к этой.

1 - переименуйте поле в модели :

from django.db import models as django_db_models
class MyModel(django_db_models.Model):
    new_name = django_db_fields.BigAutoField(
                   null=False,
                   primary_key=True,
                   auto_created=True,
                   unique=True,
               )

2- run python manage.py makemigrations (он просто создаст новые миграции на основе этого изменения)

3- затем Измените имя поля :

operations = [
        migrations.RenameField(
            model_name='mymodel',
            old_name='old_name',
            new_name='new_name',
        ),

4 - run python manage.py migrate (это переименует поле и сохранит ваши данные )

django.db.utils.ProgrammingError: column "new_name" of relation >"my_app_mymodel" does not exist

Когда вы видите вышеуказанное сообщение об ошибке, это означает, что вы еще не выполнили миграцию и только создали связанный файл миграции для данного изменения. Однако вы можете сделать это с помощью следующей команды, и тогда эта проблема будет решена, и вы больше не увидите эту ошибку:

python manage.py migrate
Вернуться на верх