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__ ==

相关内容

热门资讯

围绕透视问题!智星德州插件怎么... 围绕透视问题!智星德州插件怎么下载,德普辅助app,其实真的是有挂(有挂方法)1、进入游戏-大厅左侧...
黑科技技巧!德普之星私人局辅助... 黑科技技巧!德普之星私人局辅助免费,德扑之星怎么开辅助,总是是有挂(有挂方法)1、起透看视 德普之星...
今日!wepoker辅助器安装... 今日!wepoker辅助器安装包,德普之星透视辅助软件,原来真的是有挂(真是有挂)所有人都在同一条线...
备受关注的!hhpoker辅助... 备受关注的!hhpoker辅助靠谱吗,德扑之星透视免费,一直存在有挂(确实有挂)1、德扑之星透视免费...
黑科技教程!wpk私人局辅助是... 黑科技教程!wpk私人局辅助是真的吗,德扑之星透视软件免费入口官网,好像确实有挂(有挂猫腻)1、这是...
据统计!wepoker辅助透视... 据统计!wepoker辅助透视软件,德普之星私人局透视,其实确实有挂(有挂方法)德普之星私人局透视辅...
备受关注的!wepoker怎么... 备受关注的!wepoker怎么挂底牌,德扑之星怎么设置埋牌,一贯是真的有挂(有挂头条)小薇(辅助器软...
出乎意料的是!德普之星透视免费... 出乎意料的是!德普之星透视免费,德扑圈透视,一直真的有挂(有挂详情)1、许多玩家不知道德普之星透视免...
反观!hh poker透视器下... 反观!hh poker透视器下载,德扑之星辅助工具如何打开,真是是有挂(有挂分析)1、操作简单,无需...
目前!德普之星怎么开辅助,德扑... 目前!德普之星怎么开辅助,德扑之星辅助器,竟然是有挂(有挂秘籍)所有人都在同一条线上,像星星一样排成...