728x90
1. column_list, form_columns 를 수정하는 방법
String타입의 pk를 가지는 TestTable 이라는 테이블을 만들었다고 치자.
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class TestTable(db.Model):
__tablename__ = 'test'
id = db.Column(db.String, primary_key=True)
test_string = db.Column(db.String)
admin = Admin(app, name='flask', template_mode='bootstrap3')
admin.add_view(ModelView(TestTable, db.session))
@app.route('/', methods=['GET', 'POST'])
def index():
return 'hi'
위 코드를 실행하여, flask-admin 페이지로 들어가면 다음과 같다. (임의로 row 하나 넣어둠)
근데 보면 pk인 id가 보이지 않는다. Create 탭을 들어가도, 막상 데이터를 추가하고자 하면,
추가에 실패한다.
이럴때는 CustomModelView를 만들어서 column_list, form_columns 필드를 수정해주면 해결된다.
class MyModelView(ModelView):
column_list = ()
form_columns = ()
def __init__(self, cls, session, **kwargs):
MyModelView.column_list = [ c_attr.key for c_attr in db.inspect(cls).mapper.column_attrs ]
MyModelView.form_columns = [ c_attr.key for c_attr in db.inspect(cls).mapper.column_attrs ]
super(MyModelView, self).__init__(cls, session, **kwargs)
admin = Admin(app, name='flask', template_mode='bootstrap3')
admin.add_view(MyModelView(TestTable, db.session))
위 코드에서는 model class의 column 을 다 돌면서 추가해주었다. 이렇게 하여 실행하면 잘 나오는 것을 확인할 수 있다.
2. column_display_pk 를 수정하는 방법
이 방법은 create는 안되지만, ( 뭐, form_columns만 따로 채워주면 되긴 한다 ) 볼 수는 있는 방법이다.
class MyModelView(ModelView):
column_display_pk = True
def __init__(self, cls, session, **kwargs):
super(MyModelView, self).__init__(cls, session, **kwargs)
이 방법은 Id 부분에도 클릭하여 ordering이 가능하다.
728x90
'프로그래밍 > Python' 카테고리의 다른 글
flask-admin에서 ModelView 페이지 접근 막는 법 (0) | 2023.05.01 |
---|---|
lof (0) | 2019.08.26 |
ball tree (0) | 2019.08.01 |
kd tree (1) | 2019.07.04 |
keras를 활용한 다중선형회귀분석 (2) | 2019.05.30 |