用户报表功能



我想在我的博客中实现一个报告功能,用户可以点击文章下面的链接/按钮,管理员将收到通知,他将决定文章是否显示在主页上。

My Post model

class Post(models.Model):
title = models.CharField(max_length=225)
post_image = models.ImageField(null=True, blank=True,  upload_to="images/")
author = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField()
post_date = models.DateField(auto_now_add=True)
likes = models.ManyToManyField(User, related_name='blog_posts')
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title + ' | '  + str(self.author)
def get_absolute_url(self):
return reverse('post-detail', args=(str(self.id)),)

我views.py

def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
liked = False
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(request.user)
liked = False
else:
post.likes.add(request.user)
liked = True
return HttpResponseRedirect(reverse('post-detail', args=[str(pk)]))
class HomeView(ListView):
model = Post
template_name = 'home.html'
ordering = ['-post_date']
class Suggest(ListView):
queryset = Post.objects.annotate(like_count=Count('likes')).order_by('like_count')
template_name = 'home.html'
context_object_name = 'post_list' # Providing a useful context_object_name is always a good idea
class PostDetail(DetailView):
model = Post
template_name = 'post_detail.html'
def get_context_data(self, *args, **kwargs):
context = super(PostDetail, self).get_context_data()
current_post = get_object_or_404(Post, id=self.kwargs['pk'])
total_likes = current_post.total_likes()
liked = False
if current_post.likes.filter(id=self.request.user.id).exists():
liked = True 

context['total_likes'] = total_likes
context['liked'] = liked 
return context                    


class AddPost(CreateView):
model = Post
form_class = PostForm
template_name = 'add_post.html'
# fields = '__all__' 
success_url = reverse_lazy('home')

提前感谢!...................................................

你可能至少应该在你的Post模型中添加另一个属性,它可以决定一个特定的帖子是否应该显示在主页上。

从那里,我认为你需要决定管理员将如何实际审查这些帖子/设置它们在主页上可见。这可以像给他们发一封电子邮件一样简单,让他们登录django管理员找到有问题的帖子,并根据需要设置这个新的主页显示属性。

电子邮件甚至可以直接包含一个URL到问题的帖子!

有关django发送邮件的更多信息,请查看:https://docs.djangoproject.com/en/3.1/topics/email/

最新更新