Flask SQLAlchemy,通过类构造函数添加数据库记录时,“ __ init__恰好接受一个参数”

时间:2018-11-20 19:34:19

标签: python flask sqlalchemy flask-sqlalchemy

在我的API中,我经常使用这样的模式:

from app.models import Timecards

def add_timecard(payload):
    new_timecard = Timecards(**payload)
    db.session.add(new_timecard)
    db.session.commit()

Timecards在哪里:

class Timecards(db.Model):
__tablename__ = "timesheet_line"

    id = db.Column("line_id", db.Integer, primary_key=True, autoincrement=True)
    description = db.Column("line_description", db.String(255))
    ref_number = db.Column("line_ref_number", db.String(255))
    notes = db.Column("line_notes", db.String(255))
    approved_by_id = db.Column("line_approved_by_id", db.String(255))
    date_approved = db.Column("line_date_approved", db.DateTime)
    date_submitted = db.Column("line_date_submitted", db.DateTime)
    time_started = db.Column("line_time_started", db.DateTime)
    time_ended = db.Column("line_time_ended", db.DateTime)
    user_id = db.Column("line_user_id", db.Integer)
    is_active = db.Column("line_isActive", db.Integer)

我没有在此类上定义的自定义__init__方法。当我以这种方式与其他所有类互动时,我的所有其他类都可以正常工作,但是由于某种原因,该特定类似乎只接受此自动传递的self参数,并拒绝我的payload并出现错误

__init__() takes exactly 1 argument (2 given)

例如,我有这个课程:

class ServicesRendered(db.Model):
    __tablename__ = "services_rendered"

    id = db.Column("service_id", db.Integer, primary_key=True, autoincrement=True)
    notes = db.Column("service_notes", db.String(255))
    status = db.Column("service_status", db.String(255))
    time_open = db.Column("service_timeOpen", db.DateTime)
    time_close = db.Column("service_timeClose", db.DateTime)
    is_active = db.Column("service_isActive", db.Integer)

,以下代码可以正常工作:

def add_services_rendered(payload):
    new_services_rendered = ServicesRendered(**payload)

据我所知,这些类是以相同的方式定义的,并且我以相同的方式与它们进行交互,但是一个抛出错误,而另一个则不会。

0 个答案:

没有答案