Django Blog-Comment函数以表单形式显示作者的下拉菜单



我创建了一个Django博客,想添加一个评论部分。到目前为止,我创建了Comment模型,并且可以进行评论。但对于每个用户,它都会显示一个下拉菜单,他们可以在其中选择将与评论发布一起显示的用户,而这不应该是。我试图修改Comments模型,去掉forms.py中的"author",但没有任何效果。有人知道我能在这里做什么吗?我想这一定与作者有关,我也尝试了author = models.ForeignKey(User, on_delete = models.CASCADE),但结果相同。我的代码是这样的:

Forms.py

class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('text',)
#fields = ('author', 'text',)

型号.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})

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

问候!

author = models.ForeignKey(User, on_delete = models.CASCADE)。这也应该很好用。你的问题很可能在views.py中。

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

对于您的代码,您可能需要添加:views.py中的comment.author = request.user,然后保存注释。

最新更新