“ProgrammingError: column” genre_id “of relationship” music_album “no existe” mientras que la columna sí existe

Tengo los siguientes modelos:

class CulturalDocument(CacheMixin, models.Model): ... uuid = UUIDField(unique=True) class Genre(CulturalDocument): name = models.CharField(max_length=32) ... class Album(CulturalDocument): ... genre = models.ForeignKey(Genre, null=True, blank=True) 

Agregué el atributo de genre con una migración al sur.

Puedo ver la columna genre_id en la tabla music_album usando pg_admin.

Sin embargo, cuando hago esto:

  album = Album.objects.create(uuid=3, release_date=datetime(2000, 1, 1), title="Fantastic Album", right_holder=rh) 

Yo obtengo :

  "ProgrammingError: column "genre_id" of relation "music_album" does not exist" while the column does exist LINE 1: ..._id", "title", "release_date", "right_holder_id", "genre_id"... . ^ 

Usando PostGres 9.2 y Django 1.6 en Ubuntu 12.04.

El SQL generado es:

 INSERT INTO "music_album" ("culturaldocument_ptr_id", "title", "release_date", "right_holder_id", "genre_id") VALUES (%s, %s, %s, %s, %s) 

Lo encontré !

Tengo este error ejecutando pruebas unitarias. Cuando migré, apliqué migraciones en mi base de datos regular, pero las pruebas unitarias usan una base de datos diferente.

Py.test, mis herramientas de prueba, se configuró para vaciar las tablas, pero no eliminarlas entre las pruebas, para acelerar. Por lo tanto, las tablas de prueba utilizaban el esquema existente antes de la migración. Acabo de eliminarlos y forzar a py.test a recrearlos.

Pues por lo que puedo ver tu código:

  album = Album.objects.create(uuid=3, release_date=datetime(2000, 1, 1), title="Fantastic Album", right_holder=rh) 

Está pasando 4 elementos, mientras que la tabla requiere 5 (le falta genre_id). Tratar:

  album = Album.objects.create(uuid=3, release_date=datetime(2000, 1, 1), title="Fantastic Album", right_holder=rh, genre_id=VALID_ID) 

donde VALID_ID es un valor válido para el género.