Python 使用查询工厂从QuerySelectField获取数据值
我无法使用query\u工厂保存QuerySelectField中的数据。我将始终以以下内容结束: 错误消息Python 使用查询工厂从QuerySelectField获取数据值,python,flask-sqlalchemy,wtforms,Python,Flask Sqlalchemy,Wtforms,我无法使用query\u工厂保存QuerySelectField中的数据。我将始终以以下内容结束: 错误消息 InterfaceError: (sqlite3.InterfaceError) Error binding parameter 2 - probably unsupported type. [SQL: u'INSERT INTO asset_objects (asset_name, asset_type, asset_owner) VALUES (?, ?, ?)'] [param
InterfaceError: (sqlite3.InterfaceError)
Error binding parameter 2 - probably unsupported type.
[SQL: u'INSERT INTO asset_objects (asset_name, asset_type, asset_owner)
VALUES (?, ?, ?)'] [parameters: (u'd', u'Process', <__main__.Model_New_Users
object at 0x03819A50>)]
@app.route('/add_asset', methods=['GET', 'POST'])
def add_asset():
form = Form_New_Asset()
if request.method == 'POST':
if not request.form['asset_name'] or not request.form['asset_type']:
flash(u'Fill out all fields...', 'error')
else:
add_data = Model_New_Asset(asset_name=form.asset_name.data,
asset_type=form.asset_type.data,
asset_owner=form.asset_owner.data)
db.session.add(add_data)
db.session.commit()
flash('Post saved', 'info')
...
表格
class Form_New_Asset(Form):
asset_name = StringField(u'Asset')
asset_type = SelectField(u'Asset type',
choices=[('Process', 'Process'),
('Information', 'Information'),
('Informationssystem', 'Informationssystem'),
('Applikation', 'Applikation')])
# From Model_New_Users
asset_owner = QuerySelectField(u'Owner',
query_factory=lambda: Model_New_Users.query.all(),
get_label='owner_name')
submit = SubmitField('Save')
路线
InterfaceError: (sqlite3.InterfaceError)
Error binding parameter 2 - probably unsupported type.
[SQL: u'INSERT INTO asset_objects (asset_name, asset_type, asset_owner)
VALUES (?, ?, ?)'] [parameters: (u'd', u'Process', <__main__.Model_New_Users
object at 0x03819A50>)]
@app.route('/add_asset', methods=['GET', 'POST'])
def add_asset():
form = Form_New_Asset()
if request.method == 'POST':
if not request.form['asset_name'] or not request.form['asset_type']:
flash(u'Fill out all fields...', 'error')
else:
add_data = Model_New_Asset(asset_name=form.asset_name.data,
asset_type=form.asset_type.data,
asset_owner=form.asset_owner.data)
db.session.add(add_data)
db.session.commit()
flash('Post saved', 'info')
...
似乎我无法从查询工厂功能(资产所有者)检索实际数据
感谢您的帮助 问题是您提供了一个
Model\u New\u Users
的实例作为第二个(0索引)参数
InterfaceError: (sqlite3.InterfaceError)
Error binding parameter 2 - probably unsupported type.
[SQL: u'INSERT INTO asset_objects (asset_name, asset_type, asset_owner)
VALUES (?, ?, ?)'] [parameters: (u'd', u'Process', <__main__.Model_New_Users object at 0x03819A50>)]
这是通过表单中的lambda查询的:
asset_owner = QuerySelectField(u'Owner',
query_factory=lambda: Model_New_Users.query.all(),
get_label='owner_name')
然后在更新中传递整个对象。我想这就是问题所在
add_data = Model_New_Asset(asset_name=form.asset_name.data,
asset_type=form.asset_type.data,
asset_owner=form.asset_owner.data)
我认为您可以通过指定要通过
Model\u New\u Users
上的哪个字段来修复它。类似于form.asset\u owner.data.owner\u name
之类的东西。问题是您提供了一个Model\u New\u Users
的实例作为第二个(0索引)参数
InterfaceError: (sqlite3.InterfaceError)
Error binding parameter 2 - probably unsupported type.
[SQL: u'INSERT INTO asset_objects (asset_name, asset_type, asset_owner)
VALUES (?, ?, ?)'] [parameters: (u'd', u'Process', <__main__.Model_New_Users object at 0x03819A50>)]
这是通过表单中的lambda查询的:
asset_owner = QuerySelectField(u'Owner',
query_factory=lambda: Model_New_Users.query.all(),
get_label='owner_name')
然后在更新中传递整个对象。我想这就是问题所在
add_data = Model_New_Asset(asset_name=form.asset_name.data,
asset_type=form.asset_type.data,
asset_owner=form.asset_owner.data)
我认为您可以通过指定要通过
Model\u New\u Users
上的哪个字段来修复它。类似于form.asset\u owner.data.owner\u name
之类的东西。您获得实例的原因是您没有给出
def\uuu str\uuu():
代表性。希望这项帮助对像我这样的新手有帮助。您获得实例的原因是因为您没有给出
def\uuu str\uuu():
代表性。希望这能帮助像我这样的新手