Python 如何限制对django admin中对象的访问

Python 如何限制对django admin中对象的访问,python,django,django-admin,Python,Django,Django Admin,我试图根据当前登录的用户限制对django admin中对象的访问。下面的示例对象 class ObjectOne(models.Model): other-objecs = models.ManyToManyField(OtherObject) class OtherObject(models.Model): somefield = models.TextField() 我已经为在adminsite注册的所有对象定义了ModelAdmin对象。我重写get_queryset

我试图根据当前登录的用户限制对django admin中对象的访问。下面的示例对象

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

class OtherObject(models.Model):
    somefield = models.TextField()
我已经为在adminsite注册的所有对象定义了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字段都会显示系统中的所有对象。有什么方法可以做我想做的事吗。我希望每个用户只看到他们拥有的对象

对于任何有类似目标的人来说,遇到这个问题。在ModelAdmin类中,您为多个对象覆盖formfield并过滤查询集


你考虑过使用Django Guardian吗?找到了解决方案-感谢您的评论。