我尝试从带有Flask的HTML表单中获取值列表,并将其存储在数据库的列中。我试图使用getlist(),但我不知道应该如何正确地使用它。在
数据库:association_table = Table('association', Base.metadata,
Column('book_id', Integer, ForeignKey('Book.id')),
Column('form_id', Integer, ForeignKey('Form.id'))
)
class Book(Base):
__tablename__ = 'Book'
name = Column(String(80), nullable = False, unique=True)
id = Column(Integer, primary_key = True)
author = Column(String(30))
language = Column(String(30))
category_id = Column(Integer, ForeignKey('Category.id'), nullable = False)
category = relationship(Category)
forms = relationship("Form", secondary=association_table, back_populates="books")
def __repr__(self):
return '' % self.name
class Form(Base):
__tablename__ = 'Form'
name = Column(String, nullable = False)
id = Column(Integer, primary_key=True)
books = relationship("Book", secondary=association_table, back_populates="forms")
def __repr__(self):
return self.name
新书模板:
^{pr2}$
路线:@app.route('/books/new/', methods=['GET', 'POST'])
def newBook():
categories = session.query(Category).all()
forms = session.query(Form).all()
#languages = session.query(Languages).all()
if request.method == 'POST':
newBook = Book(name = request.form['name'],
author = request.form['author'],
category = Category(name=request.form.get('category')),
forms = Form(name=request.form.getlist('form')),
language = request.form['language'])
session.add(newBook)
session.commit()
flash("New Book Added!")
return redirect(url_for('showBooks'))
else:
return render_template('newBook.html', languages=languages, categories=categories, forms=forms)
当我试图添加新书时,我得到的是打字错误:
不兼容的集合类型:窗体不是列表形式