2010-10-25 58 views
0

当我尝试创建表一对一关系时出现错误。屏幕包含crm和crm包含更多类。这个关系是crm之间的一对一关系,所以我想使用屏幕ID作为crm中的主键。而且这个关系在crm和一些类之间是一对一的关系,我只是添加了一个类作为示例,所以crm的子项必须包含一个屏幕标识作为主键。当我尝试做出最后一次关系时,就是它破裂的时候。我试图使用,crm id和屏幕id。创建表一对一关系的问题

我没有工作。当我尝试在ContactInformation中使用crm id时出现“UnmappedClassError”等错误,并且“无法确定关系CRM.contactInformation上的父/子表之间的连接条件。指定'primaryjoin'表达式。如果这是一个多 - 当我尝试在ContactInformation中使用屏幕标识时,还需要'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

首先,为什么所有与1 3个表:1间的关系?一个符合2NF的单表应该工作得更好。

但是,如果你还想要3个表,尝试与crm_contact_informations到标准物质,而不是屏幕:

id = Column("id", Integer, ForeignKey("crms.id"), primary_key=True)