由外键过滤的模型的 Flask-admin 单独视图
Flask-admin separate view for models filtered by foreign key
我有两个sql-炼金术类。一个是 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 功能的模型创建一个视图。
我想知道使用 CRUD 为与一个测验(按测验 ID)相关的每组回复创建单独视图的最简洁方法是什么。这样相关回复的列表将可以通过 127.0.0.1/reply/<quiz_id>
.
获得
谢谢。
编辑: 我在寻找类似 this 但取决于测验 ID 的内容。
我发现解决这个问题的最简单方法是为每个测验添加一个 link 到一个页面,其中包含应用字段 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
}
我有两个sql-炼金术类。一个是 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 功能的模型创建一个视图。
我想知道使用 CRUD 为与一个测验(按测验 ID)相关的每组回复创建单独视图的最简洁方法是什么。这样相关回复的列表将可以通过 127.0.0.1/reply/<quiz_id>
.
谢谢。
编辑: 我在寻找类似 this 但取决于测验 ID 的内容。
我发现解决这个问题的最简单方法是为每个测验添加一个 link 到一个页面,其中包含应用字段 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
}