Django博客-评论功能以格式

时间:2020-05-09 19:50:54

标签: django django-models django-forms

我创建了Django博客,并希望添加评论部分。 到目前为止,我已经创建了Comment-models,并且可以发表评论。 但是,对于每个用户,它都会显示一个下拉菜单,在该菜单中,他们可以选择将与注释一起显示的用户,而不应该显示。 我试图修改注释模型,并在forms.py中删除“作者”,但没有任何效果。 有谁知道我在这里可以做什么? 我认为这一定与作者有关​​, 我也尝试过author = models.ForeignKey(User, on_delete = models.CASCADE),但结果相同。 这是我的代码的样子:

Forms.py

class CommentForm(forms.ModelForm):

    class Meta:
        model = Comment
        fields = ('text',)
        #fields = ('author', 'text',)

models.py

class Comment(models.Model):
    post = models.ForeignKey('blog.Post', on_delete=models.CASCADE, related_name='comments')
    author = models.ForeignKey(
      get_user_model(),
      on_delete=models.CASCADE
    )
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def __str__(self):
        return self.text

views.py

class UserPostListView(ListView):
    model = Post
    template_name = 'blog/user_posts.html' #<app>/<model>_<viewtype>.html
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 5

    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Post.objects.filter(author=user).order_by('-date_posted')


class PostDetailView(DetailView):
    model = Post


def add_comment_to_post(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('post-detail', pk=post.pk)
    else:
        form = CommentForm()
    return render(request, 'blog/add_comment_to_post.html', {'form': form})

如果有人能帮助我,我会很高兴。

问候!

1 个答案:

答案 0 :(得分:1)

author = models.ForeignKey(User, on_delete = models.CASCADE)。这也应该工作正常。 您的问题很可能是在views.py中。

您应该编辑发帖请求,以便您的模型通过以下方式自动吸引用户:request.user

对于您的代码,您可能需要添加: 保存评论之前,先在views.py中comment.author = request.user