我有类似以下的表:
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查询?
答案 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)
)