【问题标题】:Django abstract class with legacy database带有遗留数据库的 Django 抽象类
【发布时间】:2012-05-31 13:30:27
【问题描述】:

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

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

这就是我卡住的地方:

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

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

这是非常不符合 Python 的,我不喜欢辅助函数需要了解每个子类。

有更好的建议吗?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 2011-01-17
      • 2013-08-07
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多