Как получить входные данные от радиополя? колба и SQLAlchemy

#python-3.x #flask-sqlalchemy #flask-wtforms

Вопрос:

Я пишу веб-приложение, которое может отслеживать книги, которые я прочитал. Чтобы зарегистрировать новую книгу, пользователю также необходимо присвоить ей рейтинг, который отображается в виде звезды (с использованием html и css). Следующий код не включает часть css.

 <div class="rate">
            <input type="radio" id="star5" name="rate" value="5" />
            <label for="star5" title="text">5 stars</label>
            <input type="radio" id="star4" name="rate" value="4" />
            <label for="star4" title="text">4 stars</label>
            <input type="radio" id="star3" name="rate" value="3" />
            <label for="star3" title="text">3 stars</label>
            <input type="radio" id="star2" name="rate" value="2" />
            <label for="star2" title="text">2 stars</label>
            <input type="radio" id="star1" name="rate" value="1" />
            <label for="star1" title="text">1 star</label>
</div>
 

Это является частью forms.py и что меня интересует, так это рейтинг — радиополе

 class PostForm(FlaskForm):
    title = StringField('Title',validators=[data_required()])
    author = StringField('Author', validators=[data_required()])
    rating = RadioField('Rating')
    review = TextAreaField('Review', validators=[data_required()])
    submit = SubmitField('Post')
 

Затем информация включается в базу данных с помощью SQLAlchemy. Это класс книг, который имеет рейтинг:

 class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    author = db.Column(db.String(100), nullable=False)
    rating = db.Column(db.Integer)
    review = db.Column(db.String(400), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False,
                            default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Book('{self.title}','{self.author}','{self.rating}','{self.review}','{self.date_posted}', '{self.reader}')"
 

Это является частью routes.py.

 @app.route("/create_post", methods=['GET', 'POST'])
@login_required
def new_post():
    form = PostForm()
    if form.validate_on_submit():
        book = Book(title=form.title.data,author = form.author.data, rating=form.rating.data, review=form.review.data, reader=current_user)
        db.session.add(book)
        db.session.commit()
        flash('Your post has been created!', 'success')
        return redirect('/home')
    return render_template('create_post.html', title='New Post', form=form, legend='New Post')
 

Мой вопрос в том, как я могу получить ввод радиополя, чтобы добавить его в базу данных?