Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何获得对称多个关系中的引用对象?_Python_Django_Django Models - Fatal编程技术网

Python Django:如何获得对称多个关系中的引用对象?

Python Django:如何获得对称多个关系中的引用对象?,python,django,django-models,Python,Django,Django Models,我已经为模型UserProfile创建了多对多关系,使用户能够相互授予对特定功能的访问权限。通过使用symmetric=False来确保用户访问是单向的,这种关系可以按预期工作 型号 来自django.contrib.auth.models导入用户 类UserProfile(models.Model): user=models.OneToOneField(用户,on_delete=models.CASCADE) phone=models.IntegerField(blank=True,null=

我已经为模型
UserProfile
创建了多对多关系,使用户能够相互授予对特定功能的访问权限。通过使用
symmetric=False
来确保用户访问是单向的,这种关系可以按预期工作

型号

来自django.contrib.auth.models导入用户
类UserProfile(models.Model):
user=models.OneToOneField(用户,on_delete=models.CASCADE)
phone=models.IntegerField(blank=True,null=True)
image=models.ImageField(上传到class='profile\u image',default=“default\u thumbnail.jpg”)
department=models.ForeignKey(DepartmentModel,on_delete=models.SET_NULL,NULL=True)
允许\u预订\u访问=models.ManyToManyField(“self”,blank=True,symmetric=False)
定义(自我):
返回self.user.username
类UserInline(admin.StackedInline):
model=UserProfile
can_delete=False
详细名称复数='UserAccounts'
类用户帐户(BaseUserAdmin):
inlines=(UserInline,)
我能够查询特定用户希望通过以下途径授予访问权限的用户:(例如id=1)

UserProfile.objects.get(id=1).allow\u booking\u access.all()
但是,我希望检索已授予特定用户访问权限的用户

我该怎么做

其他信息

您可以使用以下选项进行筛选:

UserProfile.objects.filter(allow_booking_access=my_user)

使用示例数据,它将返回此查询的
UserProfile
s,其中
id=7
id=3
user=4
user=7

我尝试了上述查询,它似乎返回了
myu user
用户的3个实例。请参考底部我更新的问题。例如,对于user_id=1,我希望返回一个仅包含user_id=7的查询集。Thankyou@Lewis尝试在最后添加一个
.distinct()
(联接通常会产生重复项)。或者这个查询也可以使用
my\u user\u profile.userprofile\u set.all()
您可以通过设置
related\u name
来更改
userprofile\u set
。@Lewis:hi,我不正确地理解了这个问题,现在应该可以使用(第一个片段),第二个片段可以反向查询关系。@WillemVanOnsem,谢谢
UserProfile.objects.filter(userprofile=my_user)