2

次のようなテーブルがあります。

class User(Base):
    id    = Column(Integer, primary_key=True)
    name  = Column(String(255, unique=True)

class Document(Base):
    id    = Column(Integer, primary_key=True)
    name  = Column(String(255, unique=True)
    customer_id = Column(ForeignKey('User.id'))

Flask-Admin の ModelView (sqla) のユーザーと、作成したドキュメントの数 (func.count(Document)) を一覧表示したいと思います。カスタムSQLクエリを指定せずに、SqlAlchemyと標準のFlask-Admin ModelViewを使用してそれを達成する可能性はありますか?

4

1 に答える 1

3

これは、ModelView クラスの get_query() 関数をオーバーライドすることで実行できます。これにより、定義されたスキーマではなく、作成したクエリのビューが作成されます。

クエリの結合として user_document_table が必要になる場合もあります。

例えば:

class UserView(ModelView):

column_list = (
    "user_name",
    "n_documents"
)

def get_query(self):
    return (
        self.session.query(
            User.name.label("user_name"), 
            func.count(Document.id).label("n_documents")
        )
        .join(user_document_table)
        .join(Document)
        .group_by(User.id)
    )
于 2015-02-26T17:04:58.387 に答える