gpt4 book ai didi

postgresql - WTForms StringField 写入 Postgres 的编程错误

转载 作者:行者123 更新时间:2023-11-29 11:56:17 24 4
gpt4 key购买 nike

我的数据库是一个 Postgres 实例。我的模型定义为:

from app import db
class Device(db.Model):
__tablename__ = 'device'

id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String())

我的来源定义为:

from flask_wtf import FlaskForm
from wtforms import StringField

class EditDevices(FlaskForm):
device_name = StringField("Device Name", validators=[])
submit = SubmitField['Submit']

我在表单中收到一条错误消息:

    sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'StringField' [SQL: 'UPDATE device SET name=%(name)s WHERE device.id = %(device_id)s'] [parameters: {'name':  <wtforms.fields.core.StringField object at 0x110580c18>, 'device_id': 208}]

我哪里出错了?

最佳答案

您的代码不完整——您没有显示实际尝试设置模型数据并将其保存到数据库的位置,但错误显示 <wtforms.fields.core.StringField object at 0x110580c18>是您设置为 name 的值属性,所以你可能会这样做:

device = Device()
device.name = form.device_name
db.session.add(device)
db.session.commit()

这会导致类似于您看到的错误,因为 form.device_nameStringField而您想要用户提交的数据。要从表单元素中获取数据,您需要使用 .data属性:

device = Device()
device.name = form.device_name.data
db.session.add(device)
db.session.commit()

关于postgresql - WTForms StringField 写入 Postgres 的编程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48819480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com