4

烧瓶初学者在这里。我有一个使用以下模型的小 Flask 应用程序:

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))

现在在答案模型的创建表单中,我有一个问题的下拉框,但它没有正确填充:

使用 Flask-Admin 回答创建表单

快速入门指南不涵盖具有外键关系的模型,尽管有一些可用的实现示例,但它们根本没有记录。我很难弄清楚这里真正需要什么以及它是如何工作的。

4

2 回答 2

9

感谢一个名为mattupstate的友好 IRC 用户!模型需要__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
于 2013-10-15T18:06:35.513 回答
0

对于那些感兴趣的人,这个解决方案似乎对我不起作用。我所做的修复它是覆盖模型视图,并明确删除我不想要的列(在这种情况下,relationship注释所涉及的列)。

你可以在这里找到我的 models.py 和我覆盖的模型视图:github repo或在这个gist

于 2014-02-09T21:02:11.490 回答