有一个info
表,它与car
表或suv
表有关系。
它在info.type
字段中指定。
那么如何根据记录的类型数据动态创建关联呢?
class Info(Base):
item_id = Column(ForeignKey('cars-or-suvs-table.id'))
type = Column(String())
class Car(Base):
- data -
info = relationship('Info', backref="car")
class Suv(Base):
- data -
info = relationship('Info', backref="suv")
编辑:我已经用数据填充了表,因此我无法更改数据库架构。
在SQL中,外键必须映射到一个特定的表,因此需要将外键放在指向'car'或'suv'表中信息id'. 在
对于你所需要的,这可能有点过分了,但是有一种方法可以解决它(假设你确实希望每辆车都只有一个信息):
事件侦听器的复杂性使您能够在执行以下操作时自动管理类型:
^{pr2}$或者
如果你想留下信息类型, 信息车,和信息suv一致性,您可以省略所有事件侦听器函数。在
为CarInfo和SuvInfo单独设置对象和表也是一个非常合理的选择,并完全避免所有这些复杂性。在
由于您要寻找的解决方案不需要将外键移动到其他表,因此可以尝试以下方法:
我改名了信息车即使类型为“suv”,汽车也不可避免地成为一个伪造的汽车对象。在
为了简单起见,我省略了事件侦听器的内容,但是您可以根据我的另一个答案调整您需要的部分,以避免事情陷入不一致的状态。在
相关问题 更多 >
编程相关推荐