当我尝试创建一对一关系表时,我收到错误。屏幕包含crm和crm包含更多类。 crm之间的关系是一对一的,所以我想使用屏幕id作为crm中的主键。并且crm和某些类之间的关系是一对一的,我只添加了一个类作为示例,因此crm的子节点必须包含一个屏幕id作为主键。当我试图建立最后的关系时,它就会在它破裂时发生。我试着同时使用crm id和screen id。
我没有工作。当我尝试在ContactInformation中使用crm id时出现“UnmappedClassError”等错误,并且“无法确定关系CRM.contactInformation上的父/子表之间的连接条件。指定'primaryjoin'表达式。如果这是多个 - 当我试图在ContactInformation中使用屏幕ID时,需要“secondaryjoin”。
这些是我的课程:
class Screen(rdb.Model):
"""Set up screens table in the database"""
rdb.metadata(metadata)
rdb.tablename("screens")
id = Column("id", Integer, primary_key=True)
title = Column("title", String(100))
....
crm = relationship("CRM", uselist=False, backref="screens")
class CRM(rdb.Model):
"""Set up crm table in the database"""
rdb.metadata(metadata)
rdb.tablename("crms")
id = Column("id", Integer, ForeignKey("screens.id"), primary_key=True)
contactInformation = relationship("crm_contact_informations", uselist=False, backref="crms")
....
class CRMContactInformation(rdb.Model):
"""Set up crm contact information table in the database"""
rdb.metadata(metadata)
rdb.tablename("crm_contact_informations")
**id = Column("id", Integer, ForeignKey("screens.id"), primary_key=True)**
owner = Column("owner", String(50))
...
答案 0 :(得分:0)
首先,为什么3个表都具有1:1的关系?符合2NF标准的单个表应该可以更好地工作。
但是如果您仍然需要3个表,请尝试将crm_contact_informations与crms相关联,而不是屏幕:
id = Column("id", Integer, ForeignKey("crms.id"), primary_key=True)