[英]mixins Django how to enable staff-user post, edit, delete permission in html template
[英]Django how to restrict staff-user to edit or delete others staff-user post from django admin panel
现在我所有的 django 员工用户都可以编辑或删除其他员工用户的帖子。 我希望他们只能从 django 管理面板编辑或删除自己的帖子。 如何限制他们编辑或删除其他用户帖子? 这是我的代码:
视图.py:
class BlogPublishView(PermissionRequiredMixin,CreateView):
raise_exception = True
permission_required = "blog.add_post"
model = Post
form_class = BlogPost
template_name = "blog_post.html"
#fields = ['title','author','body']
class BlogUpdateView(PermissionRequiredMixin,UpdateView):
raise_exception = True
permission_required = "blog.change_post"
model = Post
template_name = "blog_update_post.html"
form_class = BlogPost
class BlogDeleteView(PermissionRequiredMixin,DeleteView):
raise_exception = True
permission_required = "blog.delete_post"
model = Post
template_name = "delete_blog_post.html"
success_url = reverse_lazy('blog')
网址.py
path('blog-post', BlogPublishView.as_view(), name='blog-post'),
path('blog-update/<slug:slug>', BlogUpdateView.as_view(), name='blog-update'),
path('blog-delete/<slug:slug>', BlogDeleteView.as_view(), name='blog-delete'),
html
{% if user.is_authenticated %}{% if user.id == post.author.id %} <a href="{% url 'blog-update' post.slug %}"><b>(Edit Blog)</b></a> <a href="{% url 'blog-delete' post.slug %}"><b>(Delete Blog)</b> </a>{% endif %}{% endif %}
如果你现在还不明白我的问题,让你再解释一下。 假设我的 djano 管理面板“A”、“B”和“C”中有三个用户。 用户“A”是管理员,用户“B”和“C”是员工用户。 用户“B”和“C”只有从管理面板编辑、删除和发布帖子的权限。 问题是用户“A”可以编辑和删除用户“B”的帖子,用户“B”也可以编辑或删除用户“A”的帖子。 我想限制两个员工用户从 django 管理面板编辑、删除和查看彼此的帖子。 他们只能从 django 管理面板查看、编辑和删除自己的帖子。
经过大量研究,我找到了解决方案。 在我的 django 管理员 model 中使用“get_queryset”方法后,我解决了问题。 这是代码:
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
您可以在此处阅读更多详细信息。 在应用get_queryset之前,用户“A”和用户“B”可以从 django 管理面板查看、编辑和删除彼此的帖子。 查看用户“A”登录 django 管理面板的图片,他也可以编辑用户“B”和其他成员帖子。
应用get_queryset方法后,我限制用户“A”查看、编辑和删除用户“B”的帖子。 现在用户“A”只能查看、编辑和删除他自己的帖子。 看图片
如果您在管理员 model 中应用此get_queryset方法,那么除了管理员之外,没有人可以查看、编辑和删除其他用户帖子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.