2016-10-14 90 views
0

我有一個定製的遷移:Django的不應用遷移

class Migration(migrations.Migration): 

    dependencies = [('blah', 'my_previous_migration'),] 

    operations = [ 
     migrations.RunSQL(
      sql=[("SQL HERE")], 
      reverse_sql=[("SQL UNDO HERE")]) 
    ] 

這種遷移已經應用。我想創建一個遷移撤消遷移,基本上下面的文檔說什麼:unapply migration

但我不能找到如何取消應用遷移或有任何遷移參考運行遷移的reverse_sql部分。

+0

是遷移代碼段局部應用或你已經與公衆共享此/項目還是生產? – dahrens

+0

它已經在生產,這就是爲什麼我需要一個遷移來撤消這個。 – PepperoniPizza

回答

1

讓我們叫的片段accident和附加一個fix

當編寫自定義的SQL遷移通常應提供反向部分否則你無法回滾到以前的狀態而不會丟失你的架構和/或數據的完整性。

accident應提供SQL恢復本身。應該由此回滾accidentfix包括兩個操作互換。

您可能需要閱讀about squashing migrations之後。

編輯:術語操作可能會通過,因爲它是遷移系統的一部分:)混亂 - 會說:在fix遷移交換sqlreverse_sql