简体   繁体   English

Django 管理站点 - 限制用户的用户内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM