2010-10-25 15 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)