python – Flask / SQLAlchemy错误:TypeError:不兼容的集合类型:[model]不是列表类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Flask / SQLAlchemy错误:TypeError:不兼容的集合类型:[model]不是列表类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1655字,纯文字阅读大概需要3分钟。
内容图文
我在非常简单的应用程序中有令人讨厌的问题我尝试了很多不同的方法,但仍然无法弄清楚我做错了什么.
我使用Flask flask.ext.sqlalchemy,我的模型关系也是多对多的.
authorship = db.Table('authorship',
db.Column('author_id', db.Integer, db.ForeignKey('author.id')),
db.Column('book_id', db.Integer, db.ForeignKey('book.id'))
)
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), unique=False)
description = db.Column(db.String(), unique=False)
authors = db.relationship('Author', secondary=authorship, backref=db.backref('books', lazy='dynamic'))
def __init__(self, title, description, authors):
self.title = title
self.description = description
self.authors = authors
def __repr__(self):
return self.title
class Author(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
def __init__(self, name):
self.name = name
def __repr__(self):
return self.name
无论我如何改变我的模型和玩关系我仍然有相同的错误(作者或其他模型):
TypeError: Incompatible collection type: Author is not list-like
当我尝试添加新书时出现错误.
我在WTForms中使用这些模型:
@app.route('/add_book', methods=['GET', 'POST'])
def add_book():
if not session.get('logged_in'):
abort(401)
form = AddBookForm(request.form)
if request.method == 'POST' and form.validate():
a = Author(form.author.data)
b = Book(form.title.data, form.description.data, a)
db.session.add(b)
flash("book added")
return render_template('add_book.html', form=form)
解决方法:
如果我没有弄错,这是一个M2M关系书籍 – 作者,所以而不是
b = Book(form.title.data, form.description.data, a)
你可能应该这样做
b = Book(form.title.data, form.description.data, [a])
因为它需要一个列表,你只给它一个对象.
内容总结
以上是互联网集市为您收集整理的python – Flask / SQLAlchemy错误:TypeError:不兼容的集合类型:[model]不是列表类全部内容,希望文章能够帮你解决python – Flask / SQLAlchemy错误:TypeError:不兼容的集合类型:[model]不是列表类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。