代码之家  ›  专栏  ›  技术社区  ›  Bernhard Vallant

Django South:为多个应用程序创建schemamigration

  •  2
  • Bernhard Vallant  · 技术社区  · 14 年前

    我在一个更大的项目中使用django south,我唯一不喜欢的是,你不能一次为所有的应用程序创建schemamigration(我有很多应用程序继承了相同的抽象模型,如果我改变这个基本模型,有很多应用程序需要迁移),我想你实际上可以一次迁移所有的应用程序(使用migrate--all)。

    所以我想知道DjangoSouth是否有一个简单的解决方案来同时处理一堆应用程序,或者是否有人准备好了一个很好的脚本来处理这些应用程序?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Jonatan Littke Yukiup    12 年前

    第一件事:独立的应用程序应该限制模型交互

    既然这么说了,让我们接受约束。没有南方不能为许多应用程序创建一个迁移文件,我不知道如何在一个manage.py命令中为许多应用程序生成许多迁移。

    现在留给你的只是一个剧本。你可以用这种神奇的布料 http://docs.fabfile.org/

    APPS_TO_WATCH = ['myapp','myotherapp','toomanyapps']
    def migration():
        for app in APPS_TO_WATCH:
            local('python manage.py schemamigration %s --auto' % app)
    

    晶圆厂迁移

        2
  •  3
  •   Matthew Schinckel    14 年前

    这并不是你问题的答案,但可能会有所帮助,具体取决于你想做什么。

    您可以将迁移定义为取决于来自其他应用程序的迁移。例如:

    class Migration(SchemaMigration):
        depends_on = (
            ("other_app", "0001_initial"),
        )
    

        3
  •  1
  •   rgwoodard    13 年前

    除了上面的fabric答案之外,请将以下内容添加到fabfile.py:

    from myproj.settings import INSTALLED_APPS
    
    def initmigration():
        for app in INSTALLED_APPS:
            if 0 == app.find('myproj.'):
                _app = app.split('myproj.')[1]
                local('python manage.py convert_to_south %s' % _app)
    

    fabric initmigration . 可以为客户做类似的事情 migration 上面的函数。