2016-05-18 9 views
-1

ログインのデータベースを保存しようとすると、このエラーTypeError: __init__() takes exactly 1 argument (5 given)が発生します。複数のパラメータでコンストラクタを初期化する

logs_transactions = Logs_transactions('test', 'test', 910000000, current_user.id) 
db.session.add(logs_transactions) 
db.session.commit() 

class Logs_transactions(db.Model): 
    __tablename__ = 'logs_transactions' 
    id = db.Column(db.Integer, primary_key=True) 
    type = db.Column(db.String(100)) 
    reference = db.Column(db.String(500)) 
    phone_number = db.Column(db.Integer) 
    user_id = db.Column(db.Integer, db.ForeignKey('users_user.id')) 

    def __init__(self, **kwargs): 
     super(User, self).__init__(**kwargs) 

私は私がこのようなものを使用することができます知っている:

def __init__(self, type, reference, phone_number, user_id): 
    self.type = type 
    self.reference = reference 
    self.phone_number = phone_number 
    self.user_id = user_id 

をしかし、私は多くのパラメータがある場合は、この方法では迷惑です。だから私は上記のコンストラクタは同等だと思っていますが、明らかに動作していません。基本的には、すべてのパラメータに対して明示的なself.xxxを避けたいと思います。

答えて

1

2つは同等ではありません。 kwargsはキーワードを取るため、位置的な引数を渡しています。 SQLAlchemyモデルにはすでにkwargsが必要なイニシャライザが用意されています。独自のものを用意する必要はありません。

Logs_transaction(type='test', reference='test', ...) 
関連する問題