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))。是否有可能使用 SqlAlchemy 和标准 Flask-Admin ModelView 来实现它,而不指定自定义 SQL 查询?

4

1 回答 1

3

You can do this by overriding the ModelView class' get_query() function. This will create a view of the query you write, as opposed to the schema defined.

You might also need a user_document_table as a join in your query.

For example:

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 回答