私は以下の使用して、プロジェクトの審査を保存しようとしていた、と選択フィールドが正しく示しています。しかしフラスコ管理者:sqlalchemy.exc.InterfaceError(エラーパラメータバインディング8)
# 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>
。だから私はそれをデータベースに保存できるので、レビューアの正しいデータタイプは何ですか?
CREATE TABLE `project` (
# ...
`reviewer1` TEXT,
# ...
プロジェクトテーブルで
プロジェクトのクラスで
class Project(db.Model):
# ...
reviewer = db.Column(db.Unicode(128))
# ...
そして私も__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
ありがとうございますが、今でも 'InterfaceError:'を返していません。 –
Samoth
ユーザモデルで '__str__'関数を定義しようとしてください。 – stamaimer
はい、私は '__str__'を使用していて、' __repr__'に切り替えましたが、どちらもうまくいきませんでした。 – Samoth