[英]Django admin site - limit user content on user
admin.py:管理员.py:
from django.contrib import admin
from .models import Blog
admin.site.register(Blog)
I have figured out that Django admin serves my needs very well.我发现 Django 管理员可以很好地满足我的需求。 The only thing I would like to limit is that Users could write/read/edit the Blog applications but for their own entries only.我想限制的唯一一件事是用户可以编写/阅读/编辑博客应用程序,但仅限于他们自己的条目。
If Alice posts a blog, she can read/write/edit only her posts and not the posts of Bob.如果 Alice 发布博客,她只能读取/写入/编辑她的帖子,而不能读取 Bob 的帖子。 Does Django allow anything like this in the admin site or do I need to develop my code? Django 是否允许在管理站点中进行此类操作,还是我需要开发我的代码?
admin.py:管理员.py:
from django.contrib import admin
from .models import Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
def has_change_permission(self, request, obj=None):
if obj is not None and obj.created_by != request.user:
return False
return True
def has_delete_permission(self, request, obj=None):
if obj is not None and obj.created_by != request.user:
return False
return True
The ModelAdmin class has a method called get_queryset() where you can specify which objects someone will see. ModelAdmin class 有一个名为 get_queryset() 的方法,您可以在其中指定某人将看到哪些对象。
from django.contrib import admin
from .models import Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
def get_queryset(self, request):
queryset = super().get_queryset(request)
return queryset.filter(author=request.user)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.