post_migrate仅适用于特定应用

时间:2016-03-08 17:46:41

标签: python django postgresql django-migrations

我想在每次执行syncdb时在postgres表中运行数据库注释(在列和表上)。为此,我在每个Django应用程序的SQL文件中编写了注释命令。由于在Django 1.8中不推荐使用syncdb,我将继续使用migrate。所以,我已经设置了post_migrate信号,但我希望它特定于应用程序。

例如,当我运行python manage.py migrate <app_name>时,它应该为该特定文件运行注释。这是我的代码:

class CreateComments(AppConfig):
    name = 'app_name'
    def ready(self):
        signals.post_migrate.connect(create_comments, sender=self, weak=False)


def create_comments(sender, **kwargs):
    full_path = settings.PROJECT_BASE_PATH + 'sql/app_name_comments.sql'
    sql_file = open(full_path, 'r')
    cursor = connection.cursor()
    cursor.execute(sql_file.read())
    print 'app_name Comment Applied '

我在2个应用程序中写了这个。因此,当我运行python manage.py migrate app_name1时,它会为这两个应用程序运行该功能。

我有什么方法可以使这个应用程序特定?如果我不清楚,请提及。

0 个答案:

没有答案