AttributeError:“int”对象没有属性“_sa_instance_state”

2023-12-11

我正在使用 Flask 制作论坛模板。当我尝试使用表单在浏览器中创建新线程时,SQLAlchemy 抛出 AttributeError。当我尝试实现与论坛到线程的一对多关系和与线程到用户的一对多关系时,问题出现了。

模型.py

class User(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(32), index=True, unique=True)
  password = db.Column(db.String(32), index=True)
  email = db.Column(db.String(120), index=True, unique=True)
  role = db.Column(db.SmallInteger, default=ROLE_USER)

  posts = db.relationship('Post', backref='author', lazy='dynamic')

class Forum(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(128))
  description = db.Column(db.Text)

  threads = db.relationship('Thread', backref='forum', lazy='dynamic')

class Thread(db.Model):

  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(128))
  author= db.Column(db.String(32))
  timestamp = db.Column(db.DateTime)
  forum_id = db.Column(db.Integer, db.ForeignKey('forum.id'))

  posts = db.relationship('Post', backref='thread', lazy='dynamic')

class Post(db.Model):

  id = db.Column(db.Integer, primary_key=True)
  body = db.Column(db.Text)
  timestamp = db.Column(db.DateTime)
  thread_id = db.Column(db.Integer, db.ForeignKey('thread.id'))
  user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

所有新的帖子/线程并在views.py中处理

views.py

@app.route('/forum/id=<id>/submit', methods=['GET','POST'])
@login_required
def new_thread(id):
  form = ThreadForm()
  forum = Forum.query.filter_by(id=id).first()
  if form.validate_on_submit():
    thread = Thread(title=form.title.data,
                    author=g.user.username,
                    timestamp=datetime.utcnow())
    db.session.add(thread)
    db.session.flush()
    post = Post(body=form.body.data,
                timestamp=datetime.utcnow(),
                thread=thread.id,
                author=g.user.id)
    db.session.add(post)
    db.session.commit()
    flash('Post successful.')
    return redirect(url_for('forum_index', id=id))
  return render_template('forum/thread_submit.html', title=forum.title, form=form) 

问题是这样的:

post = Post(body=form.body.data,
            timestamp=datetime.utcnow(),
            thread=thread.id,
            author=g.user.id)

你想要使用 ORM 对象,而不是主键列:

post = Post(body=form.body.data,
            timestamp=datetime.utcnow(),
            thread=thread,
            author=g.user)

该错误意味着整数被解释为 ORM 对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AttributeError:“int”对象没有属性“_sa_instance_state” 的相关文章

随机推荐

  • 如何多次做到这个长度≤1?

    我花了一天时间读完第166页length 1在书里小阴谋家 有以下代码 lambda mk length mk length mk length lambda mk length lambda l cond null l 0 else ad
  • SQL 根据总数选择每第 n 行

    我有一个包含 GPS 数据的表 lat lon timestamp 我的查询通过时间戳窗口选择 SELECT FROM gps WHERE timesamp gt 2016 12 12T02 00 00Z AND timestamp lt
  • Selenium webdriver.Remote 驱动程序不能与 tor 代理一起使用(webdriver.Chrome 可以)

    我正在尝试在我的设备上使用socks5代理远程驱动程序作为 docker 容器托管在端口 4444 上 这是代码示例 from selenium import webdriver opts webdriver ChromeOptions o
  • Nuget 和第三方 dll

    我对如何将第三方 dll 打包到 NuGet 包中感到困惑 我从我的 csproj 创建了一个 nuspec 文件 这个包是csproj的输出dll 没有问题 然后我添加一个元素并添加我的 2 个第三方 dll 这可以工作并将 dll 打包
  • 如何使用 R 从 SQL 数据库中检索很长的 XML 字符串?

    我有一个从 SQL 数据库获取 XML 文件的脚本 我是这样做的 library RODBC library XML myconn lt odbcConnect mydsn query text lt SELECT xmlfield FRO
  • "rep; nop;" 是什么意思?在 x86 汇编中意味着什么?它与“暂停”指令相同吗?

    什么是rep nop mean 是不是一样pause操作说明 是不是一样rep nop 没有分号 和简单的有什么区别nop操作说明 它在 AMD 和 Intel 处理器上的表现是否不同 奖励 这些说明的官方文档在哪里 这个问题的动机 经过评
  • 事件处理后如何更新页面数据?

    在 Page Init 上 我根据几个数据库表创建了一个动态创建的控件表 其中一个控件是 ImageButton 用于在列表中向上移动列表项 此事件处理程序的作用是更新数据库中受影响项目的 SortOrder 列 现在的问题是 由于控件是在
  • AVCaptureDeviceType.builtInDualCamera 的作用是什么

    我正在玩 swift 和 iPhone 7 Plus 我正在使用builtInWideAngleCamera 和builtInTelephotoCamera 即使我无法同时获取两张图像 这也很棒 我在苹果文档中看到 AVCaptureDev
  • 测量和基准测试浏览器中 JavaScript 引擎的处理能力

    衡量 v8 或 Spidermonkey 等 JavaScript 引擎性能的准确方法是什么 它至少应该与一个评估和另一个评估没有太大的偏差 可能允许在不同操作系统和不同硬件配置上的不同 JavaScript 引擎之间进行排名 我的第一次尝
  • 如何在android中将视频文件(.mp4)格式转换为二进制格式?

    我想在网络服务器上上传视频 我得到了一个服务 我想以二进制格式传递一个文件 我该怎么做 我尝试在 base64 的帮助下将视频文件转换为二进制格式 public class binaryformat extends Activity pri
  • 管理 cron 作业创建的日志文件

    我有一个 cron 作业 每天将其日志文件复制到我的主文件夹中 每天它都会覆盖目标文件夹中的现有文件 这是预期的 我想保留以前日期的日志 以便下次将文件复制到目标文件夹时 它会保留以前日期的文件 我怎么做 管理 cron 日志的最佳方法是为
  • Selenium Actions 还是 Java AWT Robot?

    到目前为止 我一直使用 Selenium Actions 库来在我们的自动化项目中执行鼠标 键盘操作 最近 我发现了 Java AWT Robot 类 它与 Selenium Actions 库相比如何 其中一个是否存在另一个可以解决的极端
  • JQuery Datepicker 获取所选日期

    我目前正在使用 2 个独立的 JQuery 日期选择器 我已经修改了它们的格式 以便能够传递到存储在后端 MySQL 数据库中 我的日期选择器在这里被调用
  • 取消令牌源示例

    我正在执行一些异步操作 并且如果用户请求此操作 我想使用 CancellationToken 来停止异步任务的运行 为了做到这一点 拥有一个字典是一个很好的做法 我可以用它找到正确的线程以停止正确的操作 我目前正在查看的是以下内容 publ
  • bearingTo(Location dest) 到底计算什么?

    什么是bearingTo Location dest 具体计算一下 谁能解释一下吗 提前致谢 protected void onCreate Bundle savedInstanceState DestinationLoc setLatit
  • Liquibase 锁 - 原因?

    当我在 Oracle 服务器上运行大量 liquibase 脚本时 我得到了这个信息 某个计算机就是我 Waiting for changelog lock Waiting for changelog lock Waiting for ch
  • 有没有办法实例化匿名内部类中定义的类?

    我随机编写代码并遇到一个问题 如何实例化在匿名内部类中定义的类 E 如下所示 喜欢 A c new A class E Statements 您无法编写使用普通调用的程序new为此 为了实例化一个类 它必须有一个name 正如该术语所暗示的
  • 调整 PDF 输出中的 R Markdown 标题位置

    我正在创建 R Markdown 报告 但找不到将标题移至页面下方的方法 这是一个最小的例子 我想将标题向下移动 5 厘米 title This is my title to display at 5cm below the top out
  • 角度日期管道在文本框中无法正常工作

    我的日期管道无法在 Angular 中工作 我只想显示为这种格式 MM dd yyyy 如何解决 打字稿 this testDate new Date this singleUser createDate console log this
  • AttributeError:“int”对象没有属性“_sa_instance_state”

    我正在使用 Flask 制作论坛模板 当我尝试使用表单在浏览器中创建新线程时 SQLAlchemy 抛出 AttributeError 当我尝试实现与论坛到线程的一对多关系和与线程到用户的一对多关系时 问题出现了 模型 py class U