2016-11-16 6 views
0

Flask Admin에 DB 값을 변경할 수없는 문자열 값이 있습니다. 인덱스보기에서이 열을 필터링 할 때 사용자는 드롭 다운에서 값을 선택할 수 있어야합니다.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