You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask播放列表应用添加歌曲时报int()参数不能为Row类型错误如何解决

错误原因

  • SelectField的choices参数格式错误
    你直接将db.session.query(Song.id,Song.title).filter(...).all()的返回值赋值给choices,SQLAlchemy 1.4及以上版本该查询返回的是Row对象序列,不是WTForms要求的(值, 显示文本)元组序列,coerce=int尝试对Row对象做类型转换时触发了报错。
  • 视图函数存在变量名拼写错误
    表单验证通过后的代码里你写的是playlists.songs.append(song),但前面定义的变量名是playlist,多写了后缀s,执行到这一步也会抛出名称不存在的错误。

修复方案

  1. 修改choices赋值逻辑,将查询结果手动转为元组列表:
form.song.choices = [
    (song.id, song.title) 
    for song in db.session.query(Song.id,Song.title)
    .filter(Song.id.notin_(curr_on_playlist))
    .all()
]
  1. 修正视图里的变量拼写错误:
# 把 playlists.songs.append(song) 替换为下面的代码
playlist.songs.append(song)

额外注意

你的Playlist类里的__repr__方法少写了一个后缀下划线,不符合Python魔术方法的命名规范,正确写法是:

def __repr__(self):
    return f"<Playlist {self.name}-{self.description}.>"

内容的提问来源于stack exchange,提问作者naitheas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:54:05