flask admin : sqlalchemy.exc.InterfaceError(错误绑定参数 8)
flask admin : sqlalchemy.exc.InterfaceError(Error binding parameter 8)
我试图使用以下方法保存项目的审阅者,select 字段显示正确:
# Query the user with Role.id == 4 as reviewer
def reviewer_choices():
return User.query.join(User.roles).filter(Role.id == 4)
# Build a select field
class ProjectView(sqla.ModelView):
form_extra_fields = {
'reviewer': sqla.fields.QuerySelectField(
label='Reviewer',
query_factory=reviewer_choices,
)}
但是,当我试图保存它时,出现了错误:
InterfaceError: (sqlite3.InterfaceError) Error binding parameter 8 - probably unsupported type. [SQL: u'INSERT INTO project(...reviewer...)VALUES(...<__main__.User object at 0x00000000048E89E8>...)
.
而且我注意到评论者是一个对象,类似于:<__main__.User object at 0x00000000048E89E8>
。那么评论者的正确数据类型是什么,以便我可以将其保存到数据库中?我目前使用:
项目中class
class Project(db.Model):
# ...
reviewer = db.Column(db.Unicode(128))
# ...
项目中table
CREATE TABLE `project` (
# ...
`reviewer1` TEXT,
# ...
我也尝试定义 __repr__
和 __str__
但都没有用:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
# ...
# ...
def __repr__(self):
return self.first_name
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
# ...
# ...
def __str__(self):
return self.first_name
很明显。审阅者是在 Project 中定义的字符串。您可以在用户模型中定义一个 __repr__
函数来 return 一个字符串(用户名或其他名称)。检查这个 .
我试图使用以下方法保存项目的审阅者,select 字段显示正确:
# Query the user with Role.id == 4 as reviewer
def reviewer_choices():
return User.query.join(User.roles).filter(Role.id == 4)
# Build a select field
class ProjectView(sqla.ModelView):
form_extra_fields = {
'reviewer': sqla.fields.QuerySelectField(
label='Reviewer',
query_factory=reviewer_choices,
)}
但是,当我试图保存它时,出现了错误:
InterfaceError: (sqlite3.InterfaceError) Error binding parameter 8 - probably unsupported type. [SQL: u'INSERT INTO project(...reviewer...)VALUES(...<__main__.User object at 0x00000000048E89E8>...)
.
而且我注意到评论者是一个对象,类似于:<__main__.User object at 0x00000000048E89E8>
。那么评论者的正确数据类型是什么,以便我可以将其保存到数据库中?我目前使用:
项目中class
class Project(db.Model):
# ...
reviewer = db.Column(db.Unicode(128))
# ...
项目中table
CREATE TABLE `project` (
# ...
`reviewer1` TEXT,
# ...
我也尝试定义 __repr__
和 __str__
但都没有用:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
# ...
# ...
def __repr__(self):
return self.first_name
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
# ...
# ...
def __str__(self):
return self.first_name
很明显。审阅者是在 Project 中定义的字符串。您可以在用户模型中定义一个 __repr__
函数来 return 一个字符串(用户名或其他名称)。检查这个