繁体   English   中英

Django admin:仅显示各个用户的记录

[英]Django admin : show records for respective user only

我有一个简单的模型,比如资源。 而且我的用户少于 20 个,模型管理员用于记录请求。

问题是所有用户都可以看到模型管理站点中的所有记录。

可以将此行为更改为仅显示由同一用户创建的记录吗?

谢谢你的期待。

django doc 有一个例子,几乎完全符合你的要求:

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

这个想法是在模型管理视图中覆盖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.

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