Django:用户所在组的查询筛选器

Django:用户所在组的查询筛选器,django,permissions,views,django-queryset,Django,Permissions,Views,Django Queryset,我正在尝试筛选与登录用户所属组相关的视图 假设我们有一个用户属于一群狗。我想出了如何过滤一个特定的组,这意味着已知的组名=狗 型号.py from django.contrib.auth.models import Group class Customer(models.Model): customerName = models.CharField(max_length=50) accountOwner = models.ForeignKey(Group

我正在尝试筛选与登录用户所属组相关的视图

假设我们有一个用户属于一群狗。我想出了如何过滤一个特定的组,这意味着已知的组名=狗

型号.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 )
我该怎么做呢

视图.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".)
你有什么提示吗?我只找到了过滤特定组名的解决方案,但没有找到登录用户的属性


提前谢谢

如果我理解正确,您希望使用as
accountOwner
获取所有
Customer
,这是登录的
用户所属的
对象

请求具有一个
request.user
属性,该属性存储登录的用户。然后,我们可以在此基础上进行过滤:

@login_required
def home(request):
    myData = Customer.objects.filter(accountOwner__user=request.user)
@需要登录\u
def home(请求):
myData=Customer.objects.filter(accountOwner\uu user=request.user)

请注意,由于
用户
可以同时属于多个组,因此您可以获得属于不同
帐户所有者的
客户
s。例如,如果登录用户同时属于DOGS和CATS组,则您将获得属于DOGS组的
客户
s以及属于CATS组的
客户
s。

谢谢。我知道这很容易,但我不知道答案。我不明白的是:为什么我可以通过“Group”的外键关系访问用户?@kingbrain:因为Django总是自动添加一个隐式的反向关系。例如,您可以使用
some\u Group.user\u set.all()
获取
组的用户。在查询中,您可以使用
user
@Willem\u Van\u Onsem:谢谢您的回复,很抱歉再次打扰您。这是多对多关系的内在概念,我说得对吗@金布莱恩:欢迎任何类型的关系,所以
ForeignKey
s,
OneToOne
s等等。是的,你自己写的关系也是这样。例如,如果您这样编写了两个模型
A
B
,并且
B
有一个到
A
外键,那么您可以查询
一些A.B\u set.all()
,以反向获取关系。