V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhangshine
V2EX  ›  Django

Django 1.7 调整一下 choices 的顺序居然需要做 migration

  •  
  •   zhangshine · 2014-10-20 19:18:41 +08:00 · 3927 次点击
    这是一个创建于 3481 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天调整了一下choices的顺序, django竟然认为需要做一次migration。

    就像下面的代码,把CHOICES里的('First', 1) 和 ('Second', 2)调换一下顺序,然后运行./manage makemigrations, 产生了一个0002_auto_20141020_1019.py文件。


    源:
    ```
    CHOICES = [
    ('First', 1),
    ('Second', 2)
    ]


    class Mig(models.Model):
    choice = models.CharField(max_length=200, choices=CHOICES)
    ```

    0002:
    ```
    class Migration(migrations.Migration):

    dependencies = [
    ('Mig', '0001_initial'),
    ]

    operations = [
    migrations.AlterField(
    model_name='mig',
    name='choice',
    field=models.CharField(max_length=200, choices=[(b'Second', 2), (b'First', 1)]),
    preserve_default=True,
    ),
    ]
    ```

    So, 大家认为这是Django有意为之的还是没有优化好?
    2 条回复    2014-10-20 20:23:43 +08:00
    ant_sz
        1
    ant_sz  
       2014-10-20 19:55:22 +08:00
    应该是没有优化好
    实际上是Field的任何一个参数改变,django都会检测到并生成一个migration。有些纯 Python 的参数如 blank 的改变也会导致检查到 migration
    zhangshine
        2
    zhangshine  
    OP
       2014-10-20 20:23:43 +08:00
    @ant_sz soga
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2239 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:37 · PVG 17:37 · LAX 02:37 · JFK 05:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.