Невозможно исправить неудачную миграцию 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
, которое вы описали.