Search code examples
djangodjango-south

Database is not changing after a migration


So using south, I wanted to add a new field is_private to one of my models.

Following the tutorial, after changing the models.py file, I should do this:

./manage.py schemamigration reconstructions --auto

which returns:

 Added field is_private on reconstructions.Reconstruction
Created 0005_auto__add_field_reconstruction_is_private.py. You can now apply this migration with: ./manage.py migrate reconstructions

Which is great. Now next step is,

python manage.py migrate reconstructions

And that prints:

- Migrating forwards to 0005_auto__add_field_reconstruction_is_private.
 > reconstructions:0005_auto__add_field_reconstruction_is_private
 - Loading initial data for reconstructions.
No fixtures found.

it seems to be doing it's job. But when I afterwards check the field is_private, Django throws me an error:

Cannot resolve keyword 'is_private' into field.

Which tells me south did not changed the database at all. Why is so?

Extra information: The model class:

class Reconstruction(models.Model):
    id = models.CharField(max_length=36, primary_key=True,
                          editable=False)

    uploader = models.ForeignKey(User, blank=True, null=True)
    status = models.TextField(blank=True)
    viewcount = models.IntegerField(default=0)
    error_flag = models.IntegerField(default=0)
    is_done = models.BooleanField(default=False)
    create_date = models.DateTimeField(auto_now=True)
    last_modified_date = models.DateTimeField(auto_now=True)
    is_private = models.BooleanField(default=True)

The code causing the crash:

recordings = Recording.objects.filter(is_done=True).filter(is_private=False).order_by('-create_date')

Solution

  • Observation: you added is_private to Reconstruction, but you're trying to filter Recording objects based on that property. Perhaps this is the issue?