Django:用户所在组的查询筛选器
我正在尝试筛选与登录用户所属组相关的视图 假设我们有一个用户属于一群狗。我想出了如何过滤一个特定的组,这意味着已知的组名=狗 型号.pyDjango:用户所在组的查询筛选器,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
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()
,以反向获取关系。