2016-11-16 83 views
0

在Flask Admin中,我得到了一串字符串值(我無法更改數據庫定義)。在索引視圖中過濾此列時,用戶應該能夠從下拉列表中選擇值。如何計算Flask Admin中列過濾器的下拉選項?

當用戶選擇過濾器時,應計算過濾器的可能選項。所以我需要一種方法來設置基於自定義模型查詢的選項。當列被索引時,查詢速度非常快。

SQLA custom filter example僅顯示如何應用自定義過濾器,但不顯示如何使過濾器的選項變爲動態。

回答

1

選項參數可以是調用所以這樣做以下(使用你鏈接到爲例):

def get_all_last_names(): 
    unique_last_names = User.query.with_entities(User.last_name.distinct().label("last_name")).order_by(User.last_name.asc()).all() 
    return [(user.last_name, user.last_name) for user in unique_last_names] 

class UserAdmin(sqla.ModelView): 

    column_filters = [ 
     FilterEqual(column=User.last_name, name='Last Name', options=get_all_last_names), 
    ] 

    # This is probably NOT the correct way to refresh the filters cache 
    @expose('/') 
    def index_view(self): 
     self._refresh_filters_cache() 
     return super(UserAdmin, self).index_view() 
+0

Mmmh,當應用程序啓動此功能被調用。即使頁面重新載入也不會觸發它重新加載:-( – Sebi

+0

@Sebi - 您需要更新過濾器緩存 - 我已更新我的答案 – pjcunningham