Django - 合并两个相同的应用程序的最佳方式
问题描述:
我最近进入了一个项目,在该项目中我们有两个几乎完全相同的应用程序。我们使用的是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?我不太确定最好的方法是什么。我唯一的问题是有很多外键引用。是否有一种很好的方法可以将一个应用程序表的主键更改为高于其他应用程序(实质上是在第一个表的第一个表结束时从第二个表中重新分配主键),然后让它们慢慢向下并最终合并两张桌子?任何形式的反馈将不胜感激。
答
如果什么亚历山大是在暗示你是不是你的链接,你可以用它来django multi-db支持:
- 保持在同一数据库上同时运行的应用程序和模型
- 使用迁移/同步脚本的时候,你慢慢地分离这两种模式,以便只有一个正在使用
- 编写测试:)
答
合并中最困难的事情可能是模型。 如果你使用Django,你也应该使用South。如果你不这样做 - 尝试一下。 以第一个应用程序为基础。从第二个应用程序添加字段并创建模式迁移。 然后通过第二个应用程序的数据迁移来移动数据。 从第二个应用合并您的代码。
如何将每个应用程序知道哪些记录属于它? – 2012-07-18 17:01:32