允许用户在 django admin 中查看自己的对象
allow users view own objects in django admin
我想授予用户访问管理面板的权限
我有一个 table :
class Todo(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
title = models.CharField(max_length=100)
date = models.DateTimeField()
def __str__(self):
return self.title
我只想允许用户在管理面板中查看、编辑、添加和删除他们自己的对象,而不是其他人。
我写了这个:
class TodoAdmin(admin.ModelAdmin):
def queryset(self, request):
queryset = super(TodoAdmin, self).queryset(request)
queryset = queryset.filter(user = request.user)
return queryset
但是没用。
我该怎么做?
您必须将 get_queryset
方法重写为 documented
The get_queryset method on a ModelAdmin returns a QuerySet of all
model instances that can be edited by the admin site. One use case for
overriding this method is to show objects owned by the logged-in user:
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
我想授予用户访问管理面板的权限
我有一个 table :
class Todo(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
title = models.CharField(max_length=100)
date = models.DateTimeField()
def __str__(self):
return self.title
我只想允许用户在管理面板中查看、编辑、添加和删除他们自己的对象,而不是其他人。 我写了这个:
class TodoAdmin(admin.ModelAdmin):
def queryset(self, request):
queryset = super(TodoAdmin, self).queryset(request)
queryset = queryset.filter(user = request.user)
return queryset
但是没用。 我该怎么做?
您必须将 get_queryset
方法重写为 documented
The get_queryset method on a ModelAdmin returns a QuerySet of all model instances that can be edited by the admin site. One use case for overriding this method is to show objects owned by the logged-in user:
class MyModelAdmin(admin.ModelAdmin): def get_queryset(self, request): qs = super().get_queryset(request) if request.user.is_superuser: return qs return qs.filter(author=request.user)