2011-05-16 14 views
12

¿Por qué South no reconoce los cambios en los valores de campo predeterminados en los modelos de Python? Por ejemplo, tome este modelo existente que se migra con el sur:South ignora el cambio en el valor predeterminado del campo en Python/Django

class MyFamily(models.Model): 
    family_size = models.IntegerField(verbose_name="What is your family size?", default=2) 

Ahora, me gustaría cambiar el valor por defecto de dos a cuatro. Sin embargo, cuando el módulo schemamigrating, Sur informa:

python manage.py schemamigration family --auto change_default_from_two_to_four_for_size 

Running migrations for family: 
- Nothing to migrate. 
    - Loading initial data for family. 

pude actualizar manualmente la migración inicial, y usar el SQL para actualizar directamente el campo, pero eso es un dolor. ¿Hay algún comando del Sur que no haya encontrado que reconozca el cambio en el valor predeterminado?

Gracias!

Respuesta

11

South no actualizará el valor predeterminado para las columnas existentes, porque solo le importa cuando agrega una nueva columna a una tabla no vacía. El django orm se encargará de escribir el nuevo valor predeterminado en nuevas filas antes de llegar a la base de datos.

Si va a trabajar en la base de datos desde el exterior django orm, tiene que actualizarla manualmente.

Más explicaciones south/db.add_column

+0

Sí, por desgracia llegamos a la base de datos de PHP, así, así que probablemente tendrán que cambiar manualmente. Es extraño que South no pueda cambiar el valor predeterminado. ;-) – MontyThreeCard

+0

Lo que hice básicamente es comentar el campo, schemamigration/migrate y descomentar de nuevo. Mi base de datos estaba vacía de todos modos –

Cuestiones relacionadas