2014-10-07 51 views
1

自定義字段我有類似下面的表格:瓶-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')) 

我想列出用戶在燒瓶管理的模型視圖(sqla)與FUNC,他們已經創建的文檔數(共同.Count之間(文獻))。是否有可能使用SqlAlchemy和標準Flask-Admin ModelView來實現它,而不指定自定義SQL查詢?

+1

我不認爲有一種方式來實現,如果沒有使用自定義查詢。請參閱http://stackoverflow.com/a/21454133/99594幾乎相同的問題,而不是'min'你應該使用'count'。 – van 2014-10-07 09:29:20

+0

您可以添加關係。解釋爲[這](http://stackoverflow.com/questions/16160507/flask-admin-not-showing-foreignkey-columns) – stamaimer 2016-04-18 16:39:19

回答

2

您可以通過重寫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) 
    ) 
+0

這裏唯一的問題是,如果計數爲0,行將不會顯示。將其更改爲outerjoin,您將獲得計數爲0的行。 – 2017-06-16 22:41:44