我创建了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})
如果有人能帮助我,我会很高兴。
问候!
答案 0 :(得分:1)
author = models.ForeignKey(User, on_delete = models.CASCADE)
。这也应该工作正常。
您的问题很可能是在views.py
中。
您应该编辑发帖请求,以便您的模型通过以下方式自动吸引用户:request.user
对于您的代码,您可能需要添加:
保存评论之前,先在views.py中comment.author = request.user
。