如何限制对 django admin 中对象的访问
How to limit access to objects in the django admin
我试图根据当前登录的用户限制对 django 管理中对象的访问。下面的示例对象。
class ObjectOne(models.Model):
other-objecs = models.ManyToManyField(OtherObject)
class OtherObject(models.Model):
somefield = models.TextField()
我已经为在管理站点注册的所有对象定义了 ModelAdmin 对象。我覆盖了 get_queryset 和 return 一个由属于特定用户的对象组成的子集
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)
当我直接列出一个对象时,此代码按我预期的方式工作,并且只显示属于已登录用户的对象。但是,当 adding/changing ObjectOne 时,manytomany 字段显示系统中的所有对象,无论谁登录。有什么方法可以做我想做的事情。我希望每个用户只能看到他们拥有的对象。
For anyone that has a similar objective and comes across this question. In your ModelAdmin class you override formfield_for_manytomany and filter the queryset. Documentation Here
我试图根据当前登录的用户限制对 django 管理中对象的访问。下面的示例对象。
class ObjectOne(models.Model):
other-objecs = models.ManyToManyField(OtherObject)
class OtherObject(models.Model):
somefield = models.TextField()
我已经为在管理站点注册的所有对象定义了 ModelAdmin 对象。我覆盖了 get_queryset 和 return 一个由属于特定用户的对象组成的子集
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)
当我直接列出一个对象时,此代码按我预期的方式工作,并且只显示属于已登录用户的对象。但是,当 adding/changing ObjectOne 时,manytomany 字段显示系统中的所有对象,无论谁登录。有什么方法可以做我想做的事情。我希望每个用户只能看到他们拥有的对象。
For anyone that has a similar objective and comes across this question. In your ModelAdmin class you override formfield_for_manytomany and filter the queryset. Documentation Here