0

はい、私はthis questionを見ました。それは非常に高密度であり、私は単純な問題のように思えるものを失いました。フラスコのアソシエーション_プロキシカラムの表示/編集

コード:

モデル(アプリ/ 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)) 
    # ... 

モデルビュー(アプリ/ AUTH/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? 
    } 
    # ... 

アプリ/ auth/__ init__.py

# ... 
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

ああ。右に。知らせてくれてありがとうございます。多分、これはディスプレイの問題を解決するでしょう。 –

関連する問題