【问题标题】:How to limit access to objects in the django admin如何在 django admin 中限制对对象的访问
【发布时间】:2015-07-07 18:36:27
【问题描述】:

我正在尝试根据当前登录的用户限制对 django 管理员中对象的访问。下面的示例对象。

class ObjectOne(models.Model):
    other-objecs = models.ManyToManyField(OtherObject)

class OtherObject(models.Model):
    somefield = models.TextField()

我已经为在管理站点注册的所有对象定义了 ModelAdmin 对象。我覆盖 get_queryset 并返回一个由属于特定用户的对象组成的子集

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

当我直接列出一个对象时,此代码按我的预期工作,并且只显示属于登录用户的对象。但是,当添加/更改 ObjectOne 时,manytomany 字段会显示系统中的所有对象,无论谁登录。有什么方法可以做我想做的事情。我希望每个用户只能看到他们拥有的对象。

【问题讨论】:

标签: python django django-admin


【解决方案1】:

对于任何有类似目标并遇到此问题的人。在您的 ModelAdmin 类中,您覆盖 formfield_for_manytomany 并过滤查询集。 Documentation Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2019-06-09
    • 2018-09-02
    • 1970-01-01
    • 2016-10-19
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多