Django抽象类与遗留数据库

时间:2012-05-31 13:30:28

标签: django django-models

假设我在遗留但仍处于活动状态的数据库中有三个表(duck,Goose和Rooster)。有一个第三方应用程序拥有此架构并定期添加/更新/删除条目,我具有只读访问权限。 Duck,Goose和Rooster中的PK保证是独一无二的,即使在桌子之间也是如此。

我想要一个超级类(Bird),我可以将它用作这三个表中的任何一个的ForeignKey。

这就是我被困的地方:

  • 我无法创建Duck,Goose和Rooster继承的抽象类,因为django不支持ForeignKeys来抽象类
  • 我不能创建一个完全填充的Bird模型,除非我想在每次发生变化时复制子类中的相关数据(无数时间问题)
  • 我无法将Duck,Goose和Rooster表更改为单个表,因为它是其他应用程序活动架构

此时我最好的解决方案是使用Bird抽象类但忽略Django API。我只是包含了独特的PK,而不是使用ForeignKey来实现鸟类。每当我需要实际的对象时,我会使用一些辅助函数,比如“getBirdByPK()”来检查所有三个子类。

这非常不同于pythonic,我不喜欢帮助函数需要了解每个子类。

有更好的建议吗?

1 个答案:

答案 0 :(得分:0)

我不太了解您的用例,但听起来generic relations可能会对您有所帮助。