Django如何编辑评论

vbopmzt1  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(176)

我如何编辑一个现有评论,当一个用户评论后,用户可以编辑他/她的评论。

  • 模型.py*
  1. class Comments(models.Model):
  2. user = models.ForeignKey(settings.AUTH_USER_MODEL)
  3. commented_image = models.ForeignKey(Image, ...)
  4. comment_post = models.TextField()
  • 网址.py*
  1. path('comments/<id>/', comments, name='comments'),
  2. path('comments/<int:id>/<int:comment_id>', comments, name='comments')
  • 查看次数.py*
  1. def comments(request, id, comment_id=None):
  2. post = get_object_or_404(Image, id=id)
  3. if request.method == 'POST':
  4. if comment_id:
  5. edit_form = CommentForm(#codes here)
  6. else:
  7. edit_form = CommentForm(data=request.POST)
  8. form = CommentForm(request.POST)
  9. if form.is_form():
  10. comment = form.save(commit=False)
  11. comment.user = request.user
  12. comment.commented_image = post
  13. comment.save()
  14. return redirect(...)
wyyhbhjk

wyyhbhjk1#

您必须在更新函数中传递注解ID,如下所示:

  1. path('comment/<int:comment_id>/update' ...

并执行以下操作

  1. CommentForm(instance=Comment.objects.get(id=comment_id), data=request.POST)

UPDATE:要使同一视图句柄同时创建和更新,请添加指向同一视图的新URL(并将其放置在原始视图下):

  1. path('comment/<int:id>/<int:comment_id>/', name='comment_update')

并更新视图,如下所示:

  1. def comments(request, id, comment_id=None):
  2. post = get_object_or_404(Image, id=id)
  3. if request.method == 'POST':
  4. if comment_id:
  5. form = CommentForm(instance=Comment.objects.get(id=comment_id), data=request.POST)
  6. else:
  7. form = CommentForm(data=request.POST)
  8. # Rest of your code.

在模板中:如果此表单用于更新:使用<form method="POST" action="{% url 'comment_update' post.id comment.id %}">
如果是创建表单,只需用途:<form method="POST" action="{% url 'comment_create' post.id %}">

展开查看全部
0wi1tuuw

0wi1tuuw2#

你能提供你的网页截图吗?

  1. post = get_object_or_404(Image)

你为什么要传递图片?2我猜应该是你ID,是你的发帖请求。

相关问题