我有一个简单的模型,比如资源。我只有不到20个用户,而模型管理员用于记录请求。
问题是所有用户都可以在模型管理站点中看到所有记录。
是否可以将此行为更改为仅显示由同一用户创建的记录?
感谢您的期待。
答案 0 :(得分:7)
django doc有一个几乎完全符合你想要的例子:
我们的想法是覆盖模型管理视图中的get_queryset()
方法:
# admin.py
from django.contrib import admin
class YourModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
return qs.filter(author=request.user)
admin.site.register(YourModel, YourModelAdmin)
您可以随意调整查询集过滤器以满足更具体的需求。
答案 1 :(得分:0)
UPDATE 2020:
任何对“作者”字段感到好奇的人都会在您应用的models.py
文件中建立该字段。对于admin.py
部分,您可以访问docs。
步骤1:
确保在您的权限中允许您访问希望用户拥有CRUD功能的应用程序。
第2步:
Admin.py
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)
Models.py
from django.contrib.auth import get_user_model
class Lecture(models.Model):
author = models.ForeignKey(get_user_model(), null=True, on_delete=models.CASCADE)