簡體   English   中英

flask 中只允許一條評論

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM