eliminar - ¿Por qué django 1.7 crea migraciones para cambios en las opciones de campo?
eliminar migraciones django (1)
Luego de levantar el boleto y cerrarse debido a la duplicación, finalmente se encontró la respuesta:
Esto es por diseño. Hay varias razones, entre las cuales, para mí, las migraciones de datos en puntos de la historia necesitan tener una representación completa y precisa de los modelos, incluidas todas sus opciones, no solo las que afectan a la base de datos.
Referencia:
He observado este comportamiento en la versión 1.7, pero no en versiones anteriores que utilizan la migración al sur.
p.ej.
class RedemptionCode(models.Model):
EXPIRE_OPTIONS = (
(''1 week'', ''1 Week''),
)
expire_option = models.CharField(max_length=255, choices=EXPIRE_OPTIONS)
Cuando agregué más opciones:
EXPIRE_OPTIONS = (
(''1 week'', ''1 Week''),
(''2 weeks'', ''2 Weeks''),
(''1 month'', ''1 Month''),
(''1 day'', ''1 Day''),
)
y ejecutar makemigrations
, crea una migración para él. Desde el fondo south
, pensé que debería decir que no se detectaron cambios porque no afecta el esquema de la base de datos. No sé para qué sirve:
class Migration(migrations.Migration):
dependencies = [
(''credits'', ''0001_initial''),
]
operations = [
migrations.AlterField(
model_name=''redemptioncode'',
name=''expire_option'',
field=models.CharField(max_length=255, choices=[(''1 week'', ''1 Week''), (''2 weeks'', ''2 Weeks''), (''1 month'', ''1 Month''), (''1 day'', ''1 Day'')]),
),
]