如何用数据库检查Flask-SQLAlchemy多项选择题答案

时间:2020-05-18 05:40:55

标签: python flask jinja2 flask-sqlalchemy flask-wtforms

我正在使用Flask构建一个多项选择题测验Web应用程序,并使用sqlite flask-sqlachemy将其存储。我目前有以下数据库。我还设法通过下面的模板和路线来显示问题。

我不确定如何检查具有正确答案的用户答案(由布尔“ correct_answer”标记),并将其存储在数据库中。我正在考虑在路线上进行检查,但是由于每组都有多个问题,因此我不确定如何进行检查。

class Set(db.Model):
    __tablename__ = 'set'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(140))

    questions = db.relationship('Question', backref='set', lazy='dynamic')
    user_answers = db.relationship('UserAnswer', backref='set', lazy='dynamic')

class Question(db.Model):
    __tablename__ = 'question'
    id = db.Column(db.Integer, primary_key=True)
    set_id = db.Column(db.Integer, db.ForeignKey('set.id'))
    question_text = db.Column(db.Text)

    options = db.relationship('Option', backref='question', lazy='dynamic')
    user_answers = db.relationship('UserAnswer', backref='question', lazy='dynamic')

class Option(db.Model):
    __tablename__ = 'option'
    id = db.Column(db.Integer, primary_key=True)
    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
    option_text = db.Column(db.Text)
    correct_answer = db.Column(db.Boolean, default=False)

class UserAnswer(db.Model):
    __tablename__ = 'useranswer'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    set_id = db.Column(db.Integer, db.ForeignKey('set.id'))
    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
    user_answer = db.Column(db.Integer)
@app.route('/quiz/<set_id>')
def find_question(set_id):
    set = Set.query.filter_by(id=set_id).first_or_404()
    questions = Question.query.filter_by(set_id=set_id).all()

    return render_template('question.html', title='Questions', set=set, questions=questions)
<form action="/quiz_submit" method="POST">
    <ol>
        {% for question in questions %}
        <li id="q{{ question.id }}"">{{ question.question_text }}</li>

            {% for option in question.options %}
            <input type="radio" id="{{ option.id }}" name="{{ question.id }}" value="{{ option.option_text }}">{{ option.option_text }}<br>
            {% endfor %}
            <br>
        {% endfor %}
    </ol>
    <input type="submit" value="Submit" name="Submit"/>
</form>

0 个答案:

没有答案