Flask TypeError: __init __ () отсутствует 1 обязательный позиционный аргумент: 'status' - PullRequest
0 голосов
/ 21 декабря 2018

Я получаю TypeError: init () отсутствует 1 обязательный позиционный аргумент: 'status'.Я просмотрел похожие посты и не нашел ничего, что работает.

Это мой файл views.py, добавляющий ввод формы в мою базу данных

@equipment_blueprint.route('/add', methods=['GET','POST'])
def add_equipment():
    form = addEquipment()

    if form.validate_on_submit():
        equipment_type = form.equipment_type.data
        asset_id = form.asset_id.data
        year = form.year.data
        make = form.make.data
        model = form.model.data
        serial = form.serial.data
        hours = form.hours.data
        ownership = form.ownership.data
        status = form.status.data

        #add new machine to the database
        new_equipment = EquipmentInfo(equipment_type,asset_id,year,
        make,model,serial,hours,ownership,status)
    db.session.add(new_equipment)
    db.session.commit()

    return redirect(url_for('equipment_info_blueprint.list_equipment'))

return render_template('add_equipment.html', form=form)

Это создание моего файла models.pyтаблица, где 'status' равен

from maintApp import db

class EquipmentInfo(db.Model):
    __tablename__ = 'equipment_table'

    id = db.Column(db.Integer, primary_key=True)
    equipment_type = db.Column(db.Text)
    asset_id = db.Column(db.Text)
    year = db.Column(db.Integer)
    make = db.Column(db.Text)
    model = db.Column(db.Text)
    serial = db.Column(db.Text)
    #add location details later
    hours = db.Column(db.Text)
    ownership = db.Column(db.Text)
    status = db.Column(db.Text)

def __init__(self,id,equipment_type,asset_id,year,make,model,
serial,hours,ownership,status):
    self.id = id
    self.equipment_type = equipment_type
    self.asset_id = asset_id
    self.year = year
    self.make = make
    self.model = model
    self.serial = serial
    self.hours = hours
    self.ownership = ownership
    self.status = status

def __repr__(self):
    return str(self.id)
    return str(self.equipment_type)
    return str(self.asset_id)
    return str(self.year)
    return str(self.make)
    return str(self.model)
    return str(self.serial)
    return str(self.hours)
    return str(self.ownership)
    return str(self.status)

Это фрагмент HTML-кода, создающего форму

<div class="container">
    <form method="POST">
        <br>
        <h2>
            Enter Equipment Information:
        </h2>
        <br>
        {{ form.hidden_tag() }}
        {{ form.equipment_type.label }} {{ form.equipment_type() }}<br>
        {{ form.asset_id.label }} {{ form.asset_id() }}<br>
        {{ form.year.label }} {{ form.year() }}<br>
        {{ form.make.label }} {{ form.make() }}<br>
        {{ form.model.label }} {{ form.model() }}<br>
        {{ form.serial.label }} {{ form.serial() }}<br>
        {{ form.hours.label }} {{ form.hours() }}<br>
        {{ form.ownership.label }} {{ form.ownership() }}<br>
        {{ form.status.label }} {{ form.status() }}<br>
        {{ form.submit() }}

    </form>
</div>

Я использовал практически идентичный код для другого проекта и никогда не сталкивался с этимошибка.Я что-то пропустил?Я видел в некоторых других примерах, что существуют разные способы структурирования функции def init (), но они не имеют смысла для моего кода.Спасибо за помощь!

1 Ответ

0 голосов
/ 21 декабря 2018

EquipmentInfo.__init__() ожидает идентификатор, который add_equipment() пропускается.Поскольку поля primary_key автоматически назначаются при фиксации, удалите id из подписи (и удалите self.id = id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...