0

エラーなしでコードを実行した後、次のコードは、[ユーザー] タブの [レコードの編集] または [レコードの削除] ボタンを押すと、InvalidRequestError を引き起こします。コードで示されているように継承を使用すると、このエラーが発生します。Flask-Admin のバグだと思います。誰かアイデアがありますか??
InvalidRequestError: query.get() の主キーを作成するための識別子の値の数が正しくありません。主キー列は「identities.global_id」
です。 これらは、私が使用した Flask バージョンです。

  • フラスコ: 0.10.1
  • フラスコ管理者: 1.0.7
  • Flask-SQLAlchemy: 1.0

import os
import os.path as op
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

from flask.ext import admin
from flask.ext.admin.contrib import sqla

app = Flask(__name__)
app.config['SECRET_KEY'] = '123456790'
app.config['DATABASE_FILE'] = 'sample_db.sqlite'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + app.config['DATABASE_FILE']
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

# Model with inheritance
###########################
class Identity(db.Model):
    __tablename__ = 'identities'
    global_id = db.Column(db.Integer, primary_key=True)
    _dto_type = db.Column('dto_type', db.String, nullable=False)
    __mapper_args__ = {'polymorphic_on': _dto_type}


class User(Identity):
    __mapper_args__ = {'polymorphic_identity': 'Operator'}
    id = db.Column(db.ForeignKey('identities.global_id'), primary_key=True)
    name = db.Column(db.String(100))

    def __str__(self):
        return self.username

# Views
#######
@app.route('/')
def index():
    return '<a href="/admin/">Click me to get to Admin!</a>'

# Create admin
admin = admin.Admin(app, 'Simple Models')
admin.add_view(sqla.ModelView(User, db.session))

if __name__ == '__main__':
    db.create_all()
    u = User(name='TestUser')
    db.session.add(u)
    db.session.commit()
    app_dir = op.realpath(os.path.dirname(__file__))
    database_path = op.join(app_dir, app.config['DATABASE_FILE'])
    app.run(debug=True, port=5003)
4

1 に答える 1