Flask-admin单独查看由外键过滤的模型

时间:2015-03-02 17:15:05

标签: python flask sqlalchemy flask-sqlalchemy flask-admin

我有两个sql-alchemy类。一个是Quiz,另一个是Reply

class Quiz(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  quiz_question = db.Column(db.Text)
  quiz_date = db.Column(db.DateTime)
  replies = db.relationship("Reply")

class Reply(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  reply_text = db.Column(db.Text)
  reply_date = db.Column(db.DateTime)
  reply_mark = db.Column(db.Integer)
  user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  quiz_id = db.Column(db.Integer, db.ForeignKey('quiz.id'))

我能够为每个具有CRUD功能的模型创建一个视图。

我想知道对于与一个测验相关的每组回复(通过测验ID),使用CRUD创建单独视图的最简洁方法是什么。因此,相关回复列表将通过127.0.0.1/reply/<quiz_id>提供。

谢谢。

修改:我会查找this之类的内容,但需要依赖于测验ID。

1 个答案:

答案 0 :(得分:0)

我发现解决此问题的最简单方法是为每个测验添加一个链接,其中包含应用字段quiz_id的过滤器的回复。

class Replies_view(ModelView):
  named_filter_urls = True
  column_filters = ("quiz_id",)

class Quiz_view(ModelView):
def _question_formatter(view, context, model, name):
    return Markup(
        "<a href='%s'>%s</a>" % (
            flask.url_for('reply.index_view', flt1_quiz_id_equals=model.id),
            model.quiz_question
        )
    ) if model.quiz_question else ""

column_formatters = {
    'quiz_question': _question_formatter
}