Python 3.6 / Django 2
我有一个Profile模型,用于定义和扩展" User
模型。我有一个Group模型,用于定义一些内部的app相关组;和,一个ProfileGroupLink模型,用于定义配置文件可能属于的可能组。
让我们说这些表格如下:
Profile
----------
id int
name_last varchar(32)
name_first varchar(32)
account_number uuid
Group
----------
id uuid
name varchar(32)
ProfileGroupLink
----------
id int
groupLnk uuid foreign key(Group.id)int
profileLnk uuid foreign key(Profile.account_number)
我有活跃的用户"个人资料"从:
my_profile = Profile.objects.get(user=request.user)
我通常会写一个SQL查询,如:
select Group.name
from Group as Group
inner join Profile as Profile
on ? = Profile.id
inner join ProfileGroupLink as ProfileGroupLink
on Profile.id = ProfileGroupLink.profileLnk
and Group.id = ProfileGroupLink.groupLnk
order by Group.name
并将配置文件ID作为参数传递。我正在查看页面:https://docs.djangoproject.com/en/2.0/topics/db/queries/但我没有获得连接的双下划线语法。
我目前的尝试是:
groups = Group.objects.all() \
.filter(GroupList__profile=my_profile.account_number) \
.filter(GroupList__group=Group__group_id)
但PyCharm标志" Group__group_id"作为一个未解决的参考。我正在导入模型。我如何在Django中这样做?
答案 0 :(得分:1)
我将假设您想要获取查询的内容是获取属于个人资料的群组
groups = Group.objects.filte(profilegrouplink__profilelnk=my_profile)
请注意,我把所有内容都放在小写中,不需要放入所有连接,也不要使用模型来制作过滤器,使用属性