0

예, 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 :(

답변

0

이봐,이 글을 읽는 사람이 ... 연관 프록시 플라스크 관리자를 사용할 때 아무 이유없이 을 위해 많은 일을 밝혀졌다 사용

. 그래서, 나는 키워드 관계를 일반적인 다 대다 관계로 변환했습니다. 그래서 문제는 해결 될 것 같네요.

0

, Keyword이 아닙니다.
실제로는 Paper.keywords += ["keyword"]과 같은 것을 시도 할 때 런타임 오류가 발생합니다.
그래서 당신이 원하는 무엇인가 :

creator=lambda kw: KeywordPaper(keyword=Keyword(keyword=kw)) 
+0

오. 맞아. 알려 줘서 고마워. 어쩌면 디스플레이 문제도 해결할 수 있습니다. –