【问题标题】:What is the django 1.7+ equivalent of south.signals.ran_migration?django 1.7+ 相当于 south.signals.ran_migration 是什么?
【发布时间】:2015-04-10 17:16:15
【问题描述】:

South 的“ran_migration”信号在每个单独的迁移文件运行后触发(而不是在应用的完全迁移完成后,即 post_migrate 信号)。

在内置的 Django 迁移中是否有与该信号等效的信号?

【问题讨论】:

  • Django 迁移中没有这样的信号。你需要它做什么?
  • 我们有一个信号,我们想在第一次(并且仅是第一次)设置某个应用程序时触发。过去,我们一直通过检测“0001_initial”迁移是否/何时运行来做到这一点,因为该特定迁移在应用程序的整个生命周期内只运行一次。

标签: django django-migrations


【解决方案1】:

Django 没有在每次单独迁移后运行的信号。

您可以在初始迁移结束时添加RunPython 操作,并运行用于从那里接收信号的函数。这会自动确保它仅在该特定应用程序的初始迁移结束时运行。

【讨论】:

    【解决方案2】:

    您可以尝试将MigrationRecorder 子类化并包装migrate 命令以将您的子类用作其迁移记录器(MigrationExecutor 上的recorder 属性,您可以通过子类或猴子补丁覆盖它,因为它是“公共财产)。然后你可以扩展它的行为来做你需要的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-23
      • 2020-09-23
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多