Uso el sur para migrar mis modelos django. Sin embargo, hay un error desagradable en el sur. No establece valores predeterminados en las bases de datos de Postgres. Ejemplo:django south migration, no establece el valor predeterminado
created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
Sur añadirá estos 2 campos a la base de datos, pero no para establecer sus valores predeterminados, que hay que hacer manualmente.
¿Hay algún parche para este error?
ACTUALIZACIÓN ya había intentado fijar fecha predeterminada con auto_now_add=True
, pero que tampoco es la configuración de ajustes. Agregar null=True
en el campo agrega un db.alter_column
en el script de migración producido por el sur. Pero eso solo elimina NOT NULL
restricción, no agrega un valor predeterminado. Lo mismo para el campo entero
¿Cómo puedo aplicar un valor predeterminado en la base de datos de Postgres? Tengo apis que negocian directamente con la base de datos creada por django. Esperan que los valores predeterminados estén en su lugar. – jerrymouse
Tendrá que usar SQL personalizado para modificar el esquema usted mismo. Puede hacer esto dentro de South pasando el SQL a ['db.execute'] (http://south.aeracode.org/docs/databaseapi.html#db-execute). –
Daniel simplemente porque Django intenta evitar que los usuarios modifiquen los valores predeterminados de campo en el nivel de esquema, eso no significa que NO DEBEN ser capaces de hacerlo. He publicado una solución real a continuación. – galarant