Django:查询用户所属的组的过滤器

时间:2018-07-27 10:52:42

标签: django permissions views django-queryset

我正在尝试过滤与已登录用户所属的组相关的视图。

可以说我们有一个用户属于DOGS组。我弄清楚了如何过滤特定的名称,即已知的组名称= DOGS。

Models.py

from django.contrib.auth.models import Group

    class Customer(models.Model):
        customerName = models.CharField(max_length=50)
        accountOwner = models.ForeignKey(Group, null=True, related_name='usGroup', on_delete=models.SET_NULL )

我该怎么做

views.py

from django.contrib.auth.models import User, Group

 @login_required
    def home(request):
        myData = Customer.objects.filter("Return only data of the group to which the user belongs".)

您有提示吗?我只找到了用于过滤特定组名的解决方案,但没有找到已登录用户的属性的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果我正确理解,您想以Customer(登录accountOwner所属的Group对象)获取所有User

请求具有request.user属性,该属性存储已登录的用户。然后,我们可以对此进行过滤:

@login_required
def home(request):
    myData = Customer.objects.filter(accountOwner__user=request.user)

请注意,由于User可以同时属于多个组,因此有可能获得属于不同Customer的{​​{1}}。例如,如果登录用户既属于DOGS组又属于CATS组,那么您将获得accountOwner个属于DOGS组的Customer个属于