#python #flask #flask-sqlalchemy #flask-wtforms
Вопрос:
привет, моя sqlalchemy просто не будет совершать, я почти уверен, что мой код верен, но я понятия не имею, почему он не будет совершать
class Movie(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80), unique=True, nullable=False) year = db.Column(db.String(80), nullable=False) description = db.Column(db.String(180), nullable=False) rating = db.Column(db.String(80), nullable=False) ranking = db.Column(db.String(80), nullable=False) review = db.Column(db.String(256), nullable=False) img_url = db.Column(db.String(1000), nullable=False) def __repr__(self): return f"id: {self.id} title: {self.title} year: {self.year} description: {self.description} rating: {self.rating} " f"ranking {self.ranking} review: {self.review} img_url: {self.img_url}" @app.route('/edit', methods=['GET','POST']) def edit_movie(): movie_id = request.args.get('id') form = Edit_Form() print(movie_id) if request.method == 'POST': movie_update = Movie.query.filter_by(id=movie_id).first() movie_update.rating = form.rating.data movie_update.review = form.review.data db.session.commit() return redirect(url_for('home')) return render_template('edit.html', form=form)
это мой html-код
lt;form action="{{ url_for('edit_movie') }}" method="POST"gt; {{ form.csrf_token }} lt;pgt;please put in your new ratinglt;/pgt; {{ form.rating }} lt;pgt;please write your review lt;/pgt; {{ form.review }} {{ form.submit }} lt;/formgt;
похоже, что он не вносит никаких изменений в данные sql
Ошибка атрибута: объект «Нетип» не имеет атрибута «рейтинг».
Комментарии:
1. Вы заставляете нас догадываться, в чем ошибка. Пожалуйста, обновите вопрос, чтобы включить всю обратную трассировку сообщения об ошибке.
Ответ №1:
movie_update = Movie.query.filter_by(id=movie_id).first()
не находит фильм и не возвращает его.
Ответ №2:
Объект «movie.update», который, по вашему мнению, вы создаете, не был создан, в результате чего не только оценка не будет выполнена как метод, но и я также проверяю. Так что, когда это не удастся, ничего не произойдет
Комментарии:
1. но я этого не понимаю, я получаю данные из него, например, если я наберу print(movie_update.rating), я увижу только рейтинг, поэтому я не пойму, где он не создает объект