예, this question을 보았습니다. 위와 같은 내용으로 flask_admin 설명서를 많이 읽었습니다. 즉, 모두 매우 밀도가 높습니다. 나는 단순한 문제처럼 보이는 것을 잃어 버렸습니다.방법 : flask_admin의 연관 _ 프록시 열 표시/편집
코드 :
모델 (응용 프로그램/models.py)
# Define the models for Paper and Keywords, with intermediary KeywordPaper
# Allows convenience of Paper.keywords += ["keyword"]
class Paper(db.Model):
# ...
keywords = association_proxy('paper_keywords', 'keyword',
creator=lambda kw: Keyword(keyword=kw))
# ...
class KeywordPaper(db.Model):
# ...
keyword_id = db.Column(db.Integer,
db.ForeignKey('keywords.id'),
primary_key=True)
paper_id = db.Column(db.Integer,
db.ForeignKey('papers.id'),
primary_key=True)
keyword = db.relationship(Keyword, lazy='joined')
paper = db.relationship('Paper',
backref=db.backref("paper_keywords",
cascade="all, delete-orphan"))
# ...
class Keyword(db.Model):
# ...
id = db.Column(db.Integer, primary_key=True)
keyword = db.Column(db.String(50))
# ...
모델보기 (응용 프로그램/인증/model_views.py)
class MainModelView(ModelView):
# ...
form_base_class = SecureForm
# ...
class PaperModelView(MainModelView):
page_size = 20
column_list = (
# ...
'keywords',
# ...
)
column_searchable_list = (
# ...
'keywords',
# ...
)
column_editable_list = (
# ...
'keywords',
# ...
)
form_ajax_refs = {
# ... keywords here?
}
# ...
응용 프로그램/정식/__ init__.py
,210# ...
auth = Blueprint('auth', __name__)
from . import views
auth.model_views = []
# ...
paper_model_view = PaperModelView(Paper, db.session)
auth.model_views += [paper_model_view]
# ...
from . import forms
# ...
응용 프로그램/__ init__.py
def create_app(config_name):
# ...
with app.app_context():
# ...
# Initialize auth blueprint
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint)
# Add model vies to the admin console (again, with app context)
admin.add_views(*auth_blueprint.model_views)
return(app)
현재 결과
당신이KeywordPaper
인스턴스를 생성해야합니다 중간 클래스
KeywordPaper
creator
을 사용하고 있기 때문에
Association Proxy column is blank :(
오. 맞아. 알려 줘서 고마워. 어쩌면 디스플레이 문제도 해결할 수 있습니다. –