Flask SQLAlchemy, «__init__ принимает ровно один аргумент» при добавлении записи базы данных через конструктор класса - PullRequest
0 голосов
/ 20 ноября 2018

В моем 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)

Насколько я могу судить, эти классы определены одинаково, и яЯ взаимодействую с ними таким же образом, но один выдает ошибку, а другой нет.

...