2011-08-29 11 views
15

Uso di South/Django, si verifica un problema in cui sto cercando di aggiungere una colonna UNIQUE e NOT NULL per un modello con righe esistenti nel database . South mi suggerisce di specificare un valore predefinito per la colonna, poiché è NOT NULL. Ma dal momento che ha anche un vincolo UNIQUE, non posso aggiungere un valore predefinito al campo in models.py, né posso specificare un valore una tantum perché sarà lo stesso su tutte le righe.Sud: eseguire una migrazione per una colonna che è sia univoca che non null

L'unico modo che posso immaginare per aggirare questo è creare prima una colonna nullable, applicare la migrazione, eseguire uno script per popolare le righe esistenti con valori univoci in quella colonna e quindi aggiungere un'altra migrazione per aggiungere il UNIQUE vincolo a quella colonna.

Ma c'è un modo migliore per realizzare la stessa cosa?

risposta

13

Sì, questo è l'approccio da seguire. Dovresti fare schemamigration -> datamigration -> schemamigration per questo. sfortunatamente, se non c'è modo di farlo in SQL, il sud non può farlo neanche.

Problemi correlati