2016-06-10 7 views
0

이 Flask-admin 예제 코드 http://examples.flask-admin.org/forms/admin/image/을 수정하여 이미지의 축소판과 파일 경로의 원시 텍스트를 두 개의 별도 열로 표시하려고합니다. 이것은 기본적으로 내 프로젝트에서 해결하려고하는 것과 동일한 문제입니다. 나는 그 중 하나만 표시하도록 할 수 있지만 동시에 둘 다를 표시 할 수는 없습니다.Flask-admin - ModelView에서 동일한 열의 여러 형식

예제 소스 코드에서 관련 클래스는 다음과 같습니다

class ImageView(sqla.ModelView): 
    def _list_thumbnail(view, context, model, name): 
     if not model.path: 
      return '' 

     return Markup('<img src="%s">' % url_for('static',             filename=form.thumbgen_filename(model.path))) 

    column_formatters = { 
     'path': _list_thumbnail 
    } 

내 문제를 모델 뷰 클래스 (예 : '이름'또는 '경로 SQAlchemy 모델에서 자신의 이름을 참조하여 표시 할 열이 포함되어 있다는 것입니다 '). 경로와 축소판을 모두 갖고 싶으면 'path'열을 두 번 포함시켜야합니다. 그러나 각 '경로'열에 다른 형식 기 기능을 적용 할 수는 없습니다. 따라서 두 개의 축소판 그림 열 또는 두 개의 텍스트 경로 열만있을 수 있습니다.

두 개의 '경로'열을 column_labels과 다르게 레이블을 지정하여 트릭하려고했으나 사전이 아닌 사전 개체이므로 목록을 구분할 수 없습니다.

(여기에 전체 소스 : https://github.com/flask-admin/flask-admin/blob/master/examples/forms/app.py)

답변

1

당신은 가까이 있습니다. 보기의 column_list 속성에 "더미"열을 정의하고 column_label 속성을 통해 멋진 레이블을 지정하면 이제 column_formatters 속성에 "더미"열을 사용할 수 있습니다. 예를 들어

:

class ImageView(sqla.ModelView): 

    # Add all your visible columns here include a "dummy" column - in this instance 'raw_path' 
    column_list = ('path', 'raw_path') 

    # Define label for dummy column 
    column_labels = { 
     'raw_path': 'Full Path'  
    } 

    def _list_thumbnail(view, context, model, name): 
     if not model.path: 
      return '' 
     return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path))) 

    def _list_raw_path(view, context, model, name): 
     if not model.path: 
      return '' 
     return Markup('<p>{path}</p>'.format(path=model.path)) 


    column_formatters = { 
     'path': _list_thumbnail 
     'raw_path': _list_raw_path 
    }