AttributeError:'int'objecthasnoattribute'_sa_instance_state'=>flask+sqlalchemy+many-to-many+WTFSelectMultipleField
创始人
2024-09-21 23:01:38
0次

这个错误可能是因为使用不正确的查询,以及尝试在 Int 实例上设置实例状态。解决方法是确保你正在正确查询对象,并在选择多个字段中使用字符串而不是整数作为值。或者,如果你真的想使用整数,请首先将其转换为字符串。下面是使用 Flask,SQLAlchemy 和 WTF SelectMultipleField 的示例代码,可以帮助避免这个错误:

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from wtforms import SelectMultipleField, widgets

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

association_table = db.Table('association', db.Model.metadata,
    db.Column('student_id', db.Integer, db.ForeignKey('student.id')),
    db.Column('class_id', db.Integer, db.ForeignKey('class.id'))
)

class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    classes = db.relationship('Class', secondary=association_table, backref=db.backref('students', lazy='dynamic'))

class Class(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

class MultiCheckboxField(SelectMultipleField):
    widget = widgets.ListWidget(prefix_label=False)
    option_widget = widgets.CheckboxInput()

@app.route('/', methods=['GET', 'POST'])
def index():
    form = StudentForm(request.form)
    form.classes.choices = [(str(c.id), c.name) for c in Class.query.all()]
    if request.method == 'POST' and form.validate():
        student = Student(name=form.name.data)
        for class_id in form.classes.data:
            student.classes.append(Class.query.get(int(class_id)))
        db.session.add(student)
        db.session.commit()
    students = Student.query.all()
    return render_template('index.html', form=form, students=students)

class StudentForm(FlaskForm):
    name = StringField('Name')
    classes = MultiCheckboxField('Classes')

if __name__ ==

相关内容

热门资讯

专业讨论!wepoker模拟器... wepoker模拟器哪个好用AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏...
重大消息!wpk有那种辅助吗,... 重大消息!wpk有那种辅助吗,WPK有挂吗教程(先前有开挂)AI 智能体黑科技再上新,自动化能力开挂...
推荐几款新版!wepoker底... 您好:wepoker底牌透视这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
总算了解!wpk有作弊吗,德普... 总算了解!wpk有作弊吗,德普之星外卦神器软件教程(竟然有开挂)AI 智能体黑科技再上新,自动化能力...
大神推荐!wepoker透视脚... wepoker透视脚本免费AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻...
避坑细节!如何下载德普之星辅助... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
一分钟了解!!wepoker辅... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
玩家科普!wpk真的有透视嘛,... 玩家科普!wpk真的有透视嘛,WPK透视脚本工具(好像存在有辅助挂)AI 智能体黑科技再上新,自动化...
一分钟揭秘!德普之星辅助工具如... 您好:德普之星辅助工具如何打开这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多...
大家学习交流!wepoker游... 您好:wepoker游戏安装教程这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...