2017-07-15 2 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表内: バーのテーブルinit機能で私が持っている:

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

は、今私はここに問題を抱えていますこれは:

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 

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

は、どのように私は挿入しようとしているのForeignKeyを渡すことができます。

は、今私はSQLAlchemyのそのショーのエラーでテーブルに挿入し、この言おうとしたときに? init関数で何かを定義する必要がありますか?

+1

あなたは 'Bar(receiver = whatever) 'をしようとしていますが、' bar .__ init__'のパラメータとして 'receiver'をパラメータとして定義していないようです。コードの残りの部分、特に挿入箇所の部分を投稿できますか? – 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 
関連する問題