2015-03-02 1 views
0

У меня есть два класса sql-alchemy. Одним из них является Quiz и еще один Reply:Flask-admin отдельный вид для моделей, отфильтрованных внешним ключом

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 для каждой группы ответов, связанных с одной викториной (по quiz id). Чтобы список связанных ответов был доступен через 127.0.0.1/reply/<quiz_id>.

спасибо.

Редактировать: Я искал что-то вроде this, но зависит от идентификатора викторины.

ответ

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 
}