Django admin site - ограничение содержимого сайта пользователем
admin.py:
from django.contrib import admin
from .models import Blog
admin.site.register(Blog)
Я понял, что Django admin очень хорошо служит моим потребностям. Единственное, что я хотел бы ограничить, это чтобы пользователи могли писать/читать/редактировать приложения блога, но только для своих собственных записей.
Если Алиса размещает блог, она может читать/писать/редактировать только свои записи, но не записи Боба. Позволяет ли Django сделать что-то подобное в админке сайта или мне нужно разработать свой код?
admin.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
В классе ModelAdmin есть метод 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)