我试图找出Django-ORM,但我对表连接的等价物有点困惑。在
假设我有以下三种型号,缩写为可读性。”User”是现成的Django用户模型,“AppUser”是存储诸如邮政编码之类的附加配置文件信息的对应模型,“Group”是用户的集合(注意,这个组与身份验证组无关)。每个AppUser与每个用户都有一对一的关系。类似地,每个AppUser还指向该用户所属的组(可以是None)。在
生成我的一个任务组的所有成员。在
我知道我可以使用.appuser_set.all()
从组“向后遍历一个级别”到AppUser,但我不知道如何进一步获取相关用户及其电子邮件,而不必像这样以非常重数据库的方式进行迭代:
appUser = AppUser.objects.get(user_id=request.user.id)
group = appUser.group
appUsers = group.appuser_set.all()
emails = []
for x in appUsers:
emails.append(x.user.email)
或者,我可以编写一个原始的SQL连接来完成,但怀疑Django ORM是有能力的。 什么是正确和最有效的方法来做到这一点?在
型号:
^{pr2}$
诀窍是始终从您实际想要获取的模型开始。在本例中,您需要获取电子邮件,这是用户模型上的一个字段。因此,从该模型开始,使用双下划线语法来遵循要分组的关系:
在本例中,实际上只需要一个JOIN,因为
^{pr2}$group_id
是AppUser本身的一个字段(它是group
ForeignKey的底层db字段)。如果有组名,则需要两个联接:相关问题 更多 >
编程相关推荐