[英]Allow only one comment in flask
我在 flask API 中有一個 web 應用程序,用戶在其中留下評論和星級評分(1-5)。 我會將這些評分用於電影推薦算法。 我想允許一個用戶對每部電影發表一條評論,但我不想讓他們留下一條以上的評論。 如果他們有評論,我希望他們編輯該評論。
我的評論表:
ID | 內容 | 評分 | 評論者 ID | 電影編號 |
---|---|---|---|---|
1 | 很好的電影 | 5 | 1 | 1 |
2 | 我喜歡這部電影 | 5 | 1 | 1 |
所以基本上我不想讓在這種情況下發生的事情 id=2
@app.route("/movie/<int:movie_id>", methods=['GET', 'POST'])
@login_required
def movie(movie_id):
movie = Movie.query.get_or_404(movie_id)
comments = Comment.query.filter_by(movie_id=movie_id).all()
current_user_comments = Comment.query.filter_by(movie_id=movie_id,commenter_id=current_user.id).first()
if current_user_comments:
print('Has')
else:
print('Has not')
form = CommentForm()
if form.validate_on_submit():
comment= Comment(content=form.content.data, rating=request.form.get("rating"), commenter_id=current_user.id, movie_id=movie_id)
db.session.add(comment)
db.session.commit()
flash('Comment has been added!', 'success')
return redirect(request.url)
return render_template('movie.html', title=movie.title, movie=movie,comments=comments,form=form)
如果用戶對特定電影有評論,我會打印“有”,如果他沒有,我會打印“沒有”。 現在我必須弄清楚如何讓他編輯已經存在的評論而不是創建新評論。
你在哪里print()
"Has" 你使用語法創建CommentForm
form = CommentForm(obj=curren_user_comments)
在 else 分支中
表格 = 評論表格()
這將向用戶顯示他之前的評論,如果他有之前的評論,則可以更改評論,否則他將看到一個頁面以添加新評論。
在更新中,您也需要更改代碼。 如果你有現有的current_user_comments
你想更新它,當然不要創建一個新的。 您可能希望將用戶可以更新的字段限制為例如實際評論文本和評級。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.