2012-07-18 43 views
1

我最近進入了一個項目,在該項目中我們有兩個幾乎完全相同的應用程序。我們使用的是Django 1.4和Postgresql 8.4。這兩種型號具有以下內容:Django - 合併兩個相同的應用程序的最佳方式

class Author(models.Model): 
    person = models.ForeignKey(Person) 
    book = models.ForeignKey(Book) 
    order = models.PositiveIntegerField(blank=True,null=True) 
    institute = models.ForeignKey(Institution,blank=True, null=True) 
    rank = models.ForeignKey(Rank,blank=True, null=True) 

    class Institution(models.Model): 
    name = models.CharField(max_length=200) 
    parent_institution = models.ForeignKey('self', blank=True, null=True) 
    location = models.ForeignKey(Location, blank=False, null=False) 
    type = models.ForeignKey(InstitutionType, blank=False, null=False) 

    class Person(models.Model): 
    first_name = models.CharField(max_length=100) 
    last_name = models.CharField(max_length=100) 
    middle_name = models.CharField(max_length=50,blank=True,null=True) 
    gender = models.CharField(max_length=1,choices=GENDER_TYPE,blank=True,null=True) 

    class InstitutionType(models.Model): 
    type = models.CharField(max_length=255) 

有沒有辦法輕鬆地合併兩者,無論是通過SQL或通過Django?我不太確定最好的方法是什麼。我唯一的問題是有很多外鍵引用。是否有一種很好的方法可以將一個應用程序表的主鍵更改爲高於其他應用程序(實質上是在第一個表的第一個表結束時從第二個表中重新分配主鍵),然後讓它們慢慢向下並最終合併兩張桌子?任何形式的反饋將不勝感激。

+0

如何將每個應用程序知道哪些記錄屬於它? – 2012-07-18 17:01:32

回答

0

如果什麼亞歷山大是在暗示你是不是你的鏈接,你可以用它來django multi-db支持:

  • 保持在同一數據庫上同時運行的應用程序和模型
  • 使用遷移/同步腳本的時候,你慢慢地分離這兩種模式,以便只有一個正在使用
  • 編寫測試:)
0

合併中最困難的事情可能是模型。 如果你使用Django,你也應該使用South。如果你不這樣做 - 嘗試一下。 以第一個應用程序爲基礎。從第二個應用程序添加字段並創建模式遷移。 然後通過第二個應用程序的數據遷移來移動數據。 從第二個應用合併您的代碼。