【问题标题】:Allow only staff member to delete post and post created by user只允许员工删除用户创建的帖子和帖子
【发布时间】:2021-07-18 01:46:06
【问题描述】:
在views.py中我们可以覆盖Postdelete中的一些方法来实现这个我尝试过使用
class PostDelete(DeleteView):
model = Post
def get_queryset(self):
if self.request.user.is_staff:
return super(PostDelete, self).get_queryset()
def get_success_url(self):
return reverse('dashboard')
【问题讨论】:
标签:
django
django-models
django-views
【解决方案1】:
这种方式只有员工可以删除。
def get_object(self, queryset=None):
obj = super(PostDelete, self).get_object()
if obj.user != self.request.user and not self.request.user.is_staff:
return Http404
else:
return obj
def get_success_url(self):
return reverse('dashboard')
这样创建帖子的人和员工都可以删除。
def get_object(self, queryset=None):
obj = super(PostDelete, self).get_object()
if obj.user != self.request.user and not self.request.user.is_staff:
return Http404
else:
return obj
def get_success_url(self):
return reverse('dashboard')