Невозможно исправить неудачную миграцию django

Я нечаянно сделал вот что:

ordering = models.IntegerField(default="Order/position")

Я запустил makemigrations и не получил никакой ошибки. Когда я запустил migrate, он взорвался с ошибкой:

ValueError: invalid literal for int() with base 10: 'Order/position'

я хотел сделать следующее:

ordering = models.IntegerField(default=0, verbose_name="Order/Position")

Я обновил правильное определение поля, и хотя makemigrations доволен и отметил изменение migrate все равно продолжает выдавать ту же ошибку.

Как это исправить?

Если это имеет значение - я запускаю Django с Postgres, и оба находятся в контейнерах Docker

Можно ли "отменить" ранее неудачную миграцию? Часто ли makemigration не отлавливает такие большие ошибки?

Лучше всего, вероятно, исправить сам файл миграции. В файле миграции, вероятно, это будет выглядеть так:

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        # …
    ]

    operations = [
        migrations.CreateModel(
            name='MyModel',
            fields=[
                (
                    'id',
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name='ID',
                    ),
                ),
                (
                    'ordering',
                    models.IntegerField(
                        default='Order/position',
                    ),
                ),
            ],
        )
    ]

Вы можете исправить это, изменив определение для ordering на IntegerField, которое вы описали.

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