Комментарии озвучиваются в каждом посте django? - PullRequest
0 голосов
/ 24 февраля 2019

Привет, ребята, я пытаюсь создать форму комментария в django, но проблема, с которой я сталкиваюсь, заключается в том, что при публикации этого комментария он публикуется в каждом другом сообщении. Я хочу, чтобы он был конкретным для поста, где пользователь будетКоментарий как обычная форма комментария1010 *

Ответы [ 3 ]

0 голосов
/ 24 февраля 2019
class Post(models.Model):
    image = models.ImageField()
    title = models.CharField(max_length = 100)
    body = RichTextField(blank = True)
    published_date = models.DateTimeField(auto_now_add = True)
    categories = models.ManyToManyField(Category)
    featured = models.BooleanField(default = False)

    def __str__(self):
        return self.title

    def get_comments(self):
        return Comment.objects.filter(article=self)


class Comment(models.Model):
    article = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment = models.CharField(max_length=500)
    date = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
       return self.comment



def BlogDetail(request,pk):

    post = get_object_or_404(Post,pk = pk) 

    if request.method  == 'POST':    
        form = CommentForm(request.POST)    
        if form.is_valid():
            form = form.save(commit = False)
            form.article = post
            form.user = request.user
            form.save()
            return redirect('blog',pk = post.pk)
    else:
        form = CommentForm()
        context = {
            'post': post,
            'form' : form,
        }

    return render(request,'app/blog.html', context)    


    {% for comment in post.get_comments %}
        <p>{{comment.user}}</p>
        <p>{{comment.comment}}</p>
    {% endfor %}
0 голосов
/ 24 февраля 2019

Вот изменения, которые я сделал в views.py

def BlogDetail(request,pk):

        post = get_object_or_404(Post,pk = pk)
        form = CommentForm()

        if request.method  == 'POST':

            form = CommentForm(request.POST)

            if form.is_valid():
                form = form.save(commit = False)
                form.article = post
                form.user = request.user
                form.save()
                return redirect('blog',pk = post.pk)
            else:
                form = CommentForm()  

        return render(request,'app/blog.html',{'blog_object':post,'comment':form,
    })    

А вот изменения, которые я сделал в models.py

class Comment(models.Model):
    article = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment = models.CharField(max_length=500)
    date = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
       return self.comment
0 голосов
/ 24 февраля 2019

В вашей Comment модели отсутствует FK (внешний ключ) / ссылка на сообщение, поэтому все комментарии не связаны ни с чем.Вам необходимо добавить поле post к модели Comment, связать его с моделью Post,

class Comment(models.Model):
    post = models.ForeignKey(Post)  # <<<
    name = models.CharField(max_length = 200)
    body = models.TextField()
    def __str__(self):
       return self.name

предоставить значение post_id при создании комментариев, а затем обновить код запроса следующим образом:

comment_view = Comment.objects.all()

=>

comment_view = Comment.objects.filter(post_id=pk, )
...