Cannot correct a failed migration django

I inadvertently did this:

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

I ran makemigrations and got no error. When I ran migrate it blew up with the error:

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

what I had meant to do was this:

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

I updated to the correct field definition and while makemigrations is happy and noted the change migrate still keeps throwing that same error.

How do I fix this?

In case this matters - I am running Django with Postgres and both are in Docker containers

Is it possible to "cancel" a previously failed migration? Is it common for makemigration to not catch big errors like this?

The best is probably to fix the migration file itself. In the migration file, it will probably looked like:

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',
                    ),
                ),
            ],
        )
    ]

You fix this by altering the definition for ordering to the IntegerField you described.

Back to Top