繁体   English   中英

Django 模型管理员

[英]Django Model Admin

如何在模型管理员中仅显示登录用户而不是所有用户? 现在用户只能看到自己的数据,但同时在编辑时可以在下拉列表中看到其他用户。 看图片

模型.py

user = models.ForeignKey(
    User,db_column="user",null = True, on_delete = models.SET_NULL
)

管理文件

def get_queryset(self, request):
        qs = super(Museum_ItemAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(user=request.user)

问题是当以“Peter”身份登录时,我可以查看和管理所有用户。 问题是我如何只能看到 Peter 而不能看到或更改任何其他用户?

非常感谢提前

我希望这个能帮上忙:-

您需要根据您的密钥进行过滤

管理文件

class UserAdmin(admin.ModelAdmin):
    # list_display = ('username', 'is_active')
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs.filter(is_active = True)
        return qs.filter(author=request.user)

admin.site.register(User, UserAdmin)

更多详情: https : //docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

这是答案,对我有用,感谢您的帮助

 exclude = ('user',)

def save_form(self, request, form, change):
    obj = super().save_form(request, form, change)
    if not change:
        obj.user = request.user
    return obj

def get_queryset(self, request):
   qs = super().get_queryset(request)
   if request.user.is_superuser:
       return qs
        
   return qs.filter(user=request.user)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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