2013-10-15 5 views
4

플라스크 초보자가 여기 있습니다. 내가 조금 플라스크 응용 프로그램은 다음과 같은 모델을 사용하여이 :Flask-Admin ModelView가 외래 키를 올바르게 처리하지 않습니다 (빈 드롭 다운)

class Question(db.Model): 
    __tablename__ = 'questions' 
    id = db.Column(db.Integer, primary_key=True) 
    text = db.Column(db.String, nullable=False) 

class Answer(db.Model): 
    __tablename__ = 'answers' 
    id = db.Column(db.Integer, primary_key=True) 
    text = db.Column(db.String, nullable=False) 

    question_id = db.Column(db.Integer, db.ForeignKey('questions.id')) 
    question = db.relationship("Question", backref="answers") 

내가 내 응용 프로그램에서 다음 줄을 사용하여 관리자 불 : 지금 대답 모델의 생성 형태

admin = Admin(app) 
admin.add_view(ModelView(Question, db.session)) 
admin.add_view(ModelView(Answer, db.session)) 

을, 나는 질문에 대한 드롭 다운 상자를 가지고 있지만, 제대로 채워지지 않은 것 :

Answer create form with Flask-Admin

quickstart guide은 외래 키 관계가있는 모델을 포함하지 않으며 일부 implementation examples available이 있지만 문서화되지 않았습니다. 여기에 정말로 필요한 것이 무엇이며 어떻게 작동하는지 알아내는 데 어려움을 겪고 있습니다.

답변

9

친절한 IRC 사용자 인 mattupstate에게 감사드립니다. 모델은 __str__() 구현이 필요합니다 :

관심이있는 사람들을 위해
class Question(db.Model): 
    __tablename__ = 'questions' 
    id = db.Column(db.Integer, primary_key=True) 
    text = db.Column(db.String, nullable=False) 

    def __str__(self): 
     return self.text 
0

,이 솔루션은 나를 위해 작동하지 않았다. 내가 수정 한 것은 모델보기를 재정의하고 원하지 않는 열을 명시 적으로 제거하는 것입니다 (이 경우 relationship 주석에 관련된 것).

당신은 여기 내 models.py 내 오버라이드 (override) 모델 뷰를 찾을 수 있습니다

: github repo 또는이 gist

에서