Django Как мне отредактировать комментарий - PullRequest
0 голосов
/ 02 апреля 2020

как мне отредактировать существующий комментарий, когда пользователь комментирует сообщение, которое пользователь может редактировать своим комментарием.

class Comments(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    commented_image = models.ForeignKey(Image,....) 
    comment_post = models.TextField() 
   ....... 

#urls
path('comments/<id>/', comments, name='comments'),
path('comments/<int:id>/<int:comment_id>, comments, name=' comments')

def comments(request, id, comment_id=None):
    post = get_object_or_404(Image, id=id)
    if request.method == 'POST':
        if comment_id:
            edit_form = CommentForm(#codes here) 
        else:
                edit_form = CommentForm(data=request.POST)

            form = CommentForm(request.POST)
            if form.is_form():
                comment = form.save(commit=False)
                comment.user = request.user
                comment.commented_image = post
                comment.save()
                return redirect..... 

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы должны передать идентификатор комментария в функции обновления, например:

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

и сделать следующее

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

ОБНОВЛЕНИЕ: чтобы один и тот же вид обрабатывал как создание, так и обновление, добавление новый URL-адрес, указывающий на то же представление (и поместите его под исходный):

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

и обновите свое представление следующим образом:

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

и в своем шаблоне: если эта форма для обновления: используйте <form method="POST" action="{% url 'comment_update' post.id comment.id %}">

, если это создать форму, просто используйте: <form method="POST" action="{% url 'comment_create' post.id %}">

0 голосов
/ 03 апреля 2020

Можете ли вы предоставить скриншот вашей страницы?

post = get_object_or_404(Image)

почему вы передаете изображение? это должно быть ваше удостоверение личности, от которого я думаю, ваш запрос на публикацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...