2014-10-02 7 views
18

Ich habe dieses Verhalten in Version 1.7, aber nicht in früheren Versionen mit South Migration beobachtet.Warum erstellt django 1.7 Migrationen für Änderungen der Feldauswahl?

z.

class RedemptionCode(models.Model): 
    EXPIRE_OPTIONS = (
     ('1 week', '1 Week'), 
    ) 

    expire_option = models.CharField(max_length=255, choices=EXPIRE_OPTIONS) 

, wenn ich mehr Optionen hinzugefügt:

EXPIRE_OPTIONS = (
    ('1 week', '1 Week'), 
    ('2 weeks', '2 Weeks'), 
    ('1 month', '1 Month'), 
    ('1 day', '1 Day'), 
) 

und makemigrations ausführen, erstellt es eine Migration für sie, von south Hintergrund sollte ich dachte, es kommen keine Veränderungen festgestellt sagen, da es nicht Datenbank nicht beeinflusst Schema. Ich weiß nicht, welchen Zweck es dient:

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')]), 
     ), 
    ] 
+0

da bekam ich ein paar up-Stimmen, scheint mir dieser nicht dokumentiert ist, daher habe ich ein Ticket https://code.djangoproject.com/ticket/23586 –

+1

Sieh dir meine Antwort für ähnliche Probleme an http://Stackoverflow.com/a/29233569/3025188 Prost! – user3025188

Antwort

24

Nach dem Ticket erhoben und bekam wegen Vervielfältigung geschlossen, fand schließlich die Antwort:

Das ist von Entwurf. Es gibt mehrere Gründe, nicht zuletzt für mich, dass Datamigrationen an Punkten in der Geschichte eine vollständige genaue Darstellung der Modelle haben müssen, einschließlich all ihrer Optionen, nicht nur diejenigen, die die Datenbank betreffen.

Referenz: