[英]Django admin : show records for respective user only
我有一个简单的模型,比如资源。 而且我的用户少于 20 个,模型管理员用于记录请求。
问题是所有用户都可以看到模型管理站点中的所有记录。
可以将此行为更改为仅显示由同一用户创建的记录吗?
谢谢你的期待。
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)
您可以随意调整查询集过滤器以满足更具体的需求。
2020 年更新:任何对什么是 author 字段感到好奇的人,都可以在您的应用程序的models.py
文件中建立该字段。 对于admin.py
部分,您可以访问文档。
第1步:
确保在您的权限中授予您希望用户拥有 CRUD 功能的应用程序的访问权限。
第2步:
管理文件
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)
模型.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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.