- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常基本的 Flask 应用程序:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms_sqlalchemy.fields import QuerySelectField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
from wtforms import StringField
db = SQLAlchemy()
app = Flask(__name__)
app.config['SQLALCHEMY_URI'] = 'sqlite:///:memory:'
app.config['SECRET_KEY'] = 'fnord'
db.init_app(app)
class Section(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.Text, nullable = False)
subject_id = db.Column(db.Integer, db.ForeignKey('subject.id'))
subject = db.relationship('Subject', back_populates='sections')
class Subject(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.Text, nullable = False)
sections = db.relationship('Section', back_populates='subject')
def do_something():
return Subject.query
class SelectionForm(FlaskForm):
name = StringField('Section Name', validators=[DataRequired()])
subject = QuerySelectField('Subject', query_factory=do_something, allow_blank=False, get_label='name')
with app.app_context():
db.create_all()
db.session.add(Subject(id=1, name='Science'))
db.session.add(Subject(id=2, name='Math'))
db.session.commit()
@app.route('/')
def main():
form = SelectionForm()
return render_template('index.html', form=SelectionForm())
app.run('0.0.0.0', port=5000, debug=True)
使用一个非常简单的模板:
<!DOCTYPE html>
<html>
<body>
{{ form.csrf_token }}
{{ form.name }}
{{ form.subject }}
</body>
</html>
问题是我得到 ValueError: too many values to unpack (expected 2)
.这显然不是我所期望的——据我所知,我正在遵循我在网上看到的示例,但这里有些不同。问题是无论 wtforms_sqlalchemy/fields.py 文件中发生了什么,它都会得到 (<class '__main__.Subject'>, (1), None)
。 ,而不是我所期望的可能是别的东西,因为它试图分配给 cls, key
, 大概 (<class '__main__.Subject'>, 1)
.
那么我做错了什么?
最佳答案
基于 pjcunningham 链接到的补丁,由于 wtforms 尚未发布该更新,我继续创建了我自己的 monkeypatch:
import wtforms_sqlalchemy.fields as f
def get_pk_from_identity(obj):
cls, key = f.identity_key(instance=obj)[:2]
return ':'.join(f.text_type(x) for x in key)
f.get_pk_from_identity = get_pk_from_identity
在我的代码库中加入它就足以在他们削减一个与最新版本的 SQLAlchemy 一起工作的版本之前工作。
关于flask - 为什么 Flask WTForms 和 WTForms-SQLAlchemy QuerySelectField 会产生太多的值而无法解包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353190/
我正在构建一个包含配置文件管理页面的简单 CMS。在此配置文件页面上,连同其他字段,存在一个下拉列表,我使用 wtforms 扩展的 QuerySelectField 从表“parks”生成: fro
我正在为当前的 Python/Django 项目设置测试安装。在我的开发服务器上一切正常,但我们最近为项目的测试和最终生产副本设置了一个新的 VM。我使用 Python、Django、SqlAlche
我正在使用类似于以下的代码使用 WTForms 生成一个字段: my_field = QuerySelectField( 'My Field', query_factory=lambd
我有一个看起来像这样的表格: class AddProductForm(Form): title = TextField('Title') type = QuerySelectFiel
我试图让一个选择字段以 flask 形式填充 sqlalchemy 请求的结果。 代码如下: def possible_book(): return Book.query.with_entit
我正在尝试将数据从我的FlaskSQLAlChemy数据库自动填充到FlaskForm。以下是我的代码片段:。我想把这种型号的产品自动填充到一种可以接受购买的形式。以下是我的表格:。这是我的路线:。最
我想要一个 WTForms-Alchemy 表单来填充 Cloaker 模型的 template_id 字段。但是,我在调用 populate_obj 时收到 SQLAlchemy 无法调整 Temp
我还不是程序员(正在研究它 - 这是我的第一个大项目),对于乱七八糟的代码深表歉意。 我在使用 QuerySelectField 时遇到一些问题和 request.form['form_field_n
如果使用SelectField,我们可以使用obj参数从数据库获取表单中预填充的当前值,例如this answer关于我之前的问题。 现在,我想使用 QuerySelectField 获取当前值。 这
我有一个 Flask 项目并且正在制作与 SQLAlchemy 模型密切相关的表单。在我的 MySQL 数据库中有一个房屋表和一个车库表。我想用wtforms.ext.sqlalchemy.orm.m
这个 [example][1] 在 Flask 中使用 WTForms 和 SQLAlchemy 设置一个表单,并向表单添加一个 QuerySelectField。我没有使用 flask.ext.sq
我有一个非常基本的 Flask 应用程序: from flask import Flask, render_template from flask_wtf import FlaskForm from
我在我的 Pyramid 应用程序中使用 wtforms_sqlalchemy 并定义了几个 QuerySelectField。查询工厂使用导入的 DBSession 对象进行查询。 from wtf
我是一名优秀的程序员,十分优秀!