【问题标题】:Flask TypeError: __init__() missing 1 required positional argument: 'status'烧瓶类型错误:__init__() 缺少 1 个必需的位置参数:“状态”
【发布时间】:2018-12-21 11:26:15
【问题描述】:

我收到 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 文件,用于创建“状态”所在的表

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 中的 sn-p

<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() 函数的不同方法,但它们对我的代码没有意义。感谢您的帮助!

【问题讨论】:

    标签: python flask


    【解决方案1】:

    EquipmentInfo.__init__() 需要一个 id,add_equipment() 正在跳过它。由于 primary_key 字段在提交时自动分配,因此请从签名中删除 id(并删除 self.id = id)。

    【讨论】:

    • 这解决了我的问题并且工作正常。谢谢!
    猜你喜欢
    • 2022-01-11
    • 2021-07-06
    • 2023-03-19
    • 2020-01-29
    • 2017-10-30
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多