Flask-Admin和模型中的自定义字段

时间:2014-10-07 08:20:09

标签: python flask sqlalchemy flask-admin

我有类似以下的表:

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查询?

1 个答案:

答案 0 :(得分: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)
    )