2013-10-11 70 views
0

我有兩個型號(我使用MySQL。):SQLAlchemy的瓶模型限制保存 - 關係配置

class Customer(Base): 
    __tablename__ = 'customer' 
    ... 
    partner_id =Column(Integer, ForeignKey('partner.id'), nullable=False) 
    ... 

class User(Base): 
    ... 
    customer_id = Column(Integer, ForeignKey('customer.id'), nullable=False) 
    partner_id = Column(Integer, ForeignKey('partner.id'), nullable=False) 
    ... 

如何檢查而保存的Usercustomer_idpartner_idpartner_id對應那Customercustomer_id? 有任何關係配置禁止嗎? 我想:

ForeignKeyConstraint(['partner_id'], ['customer.partner_id']) 

在用戶模式,但是當我嘗試,否則它不會停止!

+1

「檢查而保存了CUSTOMER_ID用戶和PARTNER_ID的PARTNER_ID對應於與CUSTOMER_ID客戶的」。它可能就是我,但這個說法很混亂,很難理解你要求的東西。你可能想嘗試在你的問題中使用一個例子? – codegeek

+0

我想保存一個用戶。現在,用戶表具有客戶和合作夥伴的FK。客戶表格有一個FK給合作伙伴。現在保存一個用戶,如果我保存一個客戶的FK; partner_id = 1(來自Customer Table),User表中的partner_id需要爲1.如果嘗試輸入其他值,則需要拋出錯誤。 –

回答

0

我想也許我已經抓住了你的觀點。

你可以做的驗證或約束,像這樣一些代碼:

user = user_to_save() 
customer = session.query(Customer).filter(Customer.id = user.customer_id).one() 
if customer.partner_id == user.partner_id: 
    save_user() 
else: 
    do_something() 
+0

我想知道SQLAlchemy本身是否有一些方法可以執行此操作? –