Py学习  »  Django

django限制用户对相关对象的访问

user1330734 • 5 年前 • 1621 次点击  

我正在编写一个应用程序,它允许用户仅在其组织内验证和查看对象。对于一个 generic.ListView ,我可以用下面的代码限制访问权限:

模特儿

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    organisation = models.ForeignKey('Organisation', null=True, on_delete=models.CASCADE)

class Organisation(models.Model):
    name = models.CharField(max_length=255, unique=True, null=False, verbose_name="Name")

VIEW

class OrganisationList(LoginRequiredMixin, generic.ListView):
model = Organisation

def get_queryset(self):
    return Organisation.objects.filter(id=self.request.user.organisation.id)

除此视图外,用户还将访问需要此限制的表单、api和django管理接口。

例如,用户brett属于kids incorporated。当他登录到管理面板时,他目前还可以看到顶点公司,但不应该这样做。

User Brett should not see ACME Corporation

我已经看过了 ModelManager 接口,但我不确定如何获取用户请求和重写 有没有一种方法可以为所有视图运行一个查询(dry),以便用户只看到自己的组织?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43947
 
1621 次点击  
文章 [ 2 ]  |  最新文章 5 年前