2017-07-15 48 views
0

我用燒瓶創建了一個簡單的Web應用程序。 現在在模型中我有和另外2個表有關係的酒吧桌。如何在sqlalchemy中傳入ForeignKey

user_shipper_id = Column(Integer, ForeignKey('user_shipper.id', ondelete='CASCADE'), nullable=False) 
user_receiver_id = Column(Integer, ForeignKey('user_receiver.id', ondelete='CASCADE'), nullable=False) 

現在user_shipper,我有這個:

 bars = relationship('bar',backref='shipper',lazy='dynamic') 

的也user_receiver表:

bars = relationship('bar',backref='receiver',lazy='dynamic') 

現在我這裏有一個問題:在酒吧的桌子init功能 我有這個:

def __init__(self, origin, destination, tonage, load_date, unload_date, load_address, unload_adress, unload_type, packing, act_type, truck_type, payment_type): 
    self.origin = origin 
    self.destination = destination 
    self.tonage = tonage 
    self.load_date = load_date 
    self.unload_date = unload_date 
    self.load_adress = load_adress 
    self.unload_type = unload_type 
    self.unload_adress = unload_adress 
    self.packing = packing 
    self.act_type = act_type 
    self.truck_type = truck_type 
    self.payment_type = payment_type 

現在,當我試圖插入到表SQLAlchemy的它的顯示錯誤,這樣說:

TypeError: __init__() got an unexpected keyword argument 'receiver' 

如何傳遞,當我試圖插入ForeignKey的?我應該在init函數中定義一些東西嗎?

+1

那麼它看起來像你試圖做'酒吧(接收器=無論)',但你還沒有定義'接收器'作爲參數在'Bar .__ init__'。你可以發佈你的代碼的其餘部分,特別是你插入的部分嗎? – univerio

回答

1

您需要在對象初始化時同時通過user_receiver_iduser_shipper_id

我還沒有測試過這個,但是你可以嘗試使用這個作爲一個見解!

class UserShipper(): 
    ... 
    bars = relationship('Bar', back_populates='shipper', lazy='dynamic') 


class UserReceiver(): 
    ... 
    bars = relationship('Bar', back_populates='receiver', lazy='dynamic') 


class Bar(): 
    ... 
    user_shipper_id = Column(Integer, ForeignKey('user_shipper.id', ondelete='CASCADE'), nullable=False) 
    shipper = relationship('UserShipper', back_populates='bars') 

    user_receiver_id = Column(Integer, ForeignKey('user_receiver.id', ondelete='CASCADE'), nullable=False) 
    receiver = relationship('UserReceiver', back_populates='bars') 

    def __init(self, ..., user_shipper_id, user_receiver_id): 
     ... 
     self.user_shipper_id = user_shipper_id 
     self.user_receiver_id = user_receiver_id 
相關問題