Io uso sud per migrare i miei modelli di Django. C'è tuttavia un brutto insetto nel sud. Non imposta valori predefiniti nei database Postgres. Esempio:migrazione django sud, non imposta default
created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
Sud aggiungerà questi 2 campi al database, ma non riescono a impostare i valori di default, che deve essere fatto manualmente.
C'è qualche patch per questo bug?
UPDATE avevo già provato a fissare la data di default con auto_now_add=True
, ma che non sia anche l'impostazione di default. L'aggiunta di null=True
nel campo aggiunge uno db.alter_column
nello script di migrazione prodotto da sud. Ma questo solo rimuove il vincolo NOT NULL
, non aggiunge un valore predefinito. Lo stesso vale per il campo intero
Come imporre un valore predefinito nel database Postgres. Ho delle API che negoziano direttamente con il database creato da Django. Si aspettano che i valori predefiniti siano a posto. – jerrymouse
Dovrai usare l'SQL personalizzato per modificare te stesso lo schema. Puoi farlo in Sud passando l'SQL a ['db.execute'] (http://south.aeracode.org/docs/databaseapi.html#db-execute). –
Daniel solo perché Django cerca di impedire agli utenti di modificare le impostazioni predefinite del campo a livello di schema, ciò non significa che NON DEVONO essere in grado di farlo. Ho pubblicato una soluzione reale di seguito. – galarant