2011-08-29 19 views
15

Al usar South/Django, me encuentro con un problema donde intento agregar una columna UNIQUE y NOT NULL para un modelo con filas existentes en la base de datos . South me pide que especifique un valor predeterminado para la columna, ya que es NOT NULL. Pero como también tiene una restricción UNIQUE, no puedo agregar un valor predeterminado al campo en models.py, ni puedo especificar un valor único porque será el mismo en todas las filas.sur: ejecuta una migración para una columna que es única y no nula

La única forma que se me ocurre para evitar esto es crear primero una columna anulable, aplicar la migración, ejecutar un script para llenar las filas existentes con valores únicos en esa columna y luego agregar otra migración para agregar el UNIQUE restricción a esa columna.

¿Pero hay una mejor manera de lograr lo mismo?

Respuesta

13

Sí, este es el enfoque que debe tomar. Debería estar haciendo schemamigration -> datamigration -> schemamigration para esto. Desafortunadamente, si no hay forma de hacerlo en SQL, South tampoco puede hacerlo.

Cuestiones relacionadas