2016-05-18 35 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

這兩個不相等。 kwargs需要關鍵字,你傳遞位置參數。 SQLAlchemy模型已經有一個需要kwargs的初始化器,你不需要提供自己的。

Logs_transaction(type='test', reference='test', ...)