我有一个复杂的查询建立在一个用户配置文件,我开始
qset = Profile.objects
一堆可以返回我的profile对象的东西(它使用Q对象,如果字段留空,还可以忽略一些字段)
我可以用selected_related()
获取用户,但这仍然给我留下了一个概要文件列表,而不是一个用户列表。在
因为我的模板是为其他事情设置的,我真的很想有一个用户列表
^{pr2}$如何将他的Profile对象查询集转换为用户查询集。在
目前我使用:
profile_userids = list(qset.values('user_id'))
user_ids = [d['user_id'] for d in profile_userids]
users = User.objects.in_bulk(user_ids)
这将导致2个查询,并将所有用户的id转换为python对象。在
如何使用在Profiles对象上生成的queryset来选择用户?在
使Q对象引用
profile__whatever
,并在User.objects.filter()
中使用它们。在结果我不得不修改模板。Django有个bug授权用户. 当视图代码看起来像:
模板看起来像
^{pr2}$a.get_profile忽略了配置文件是使用select\u related加载的这一事实,并对概要文件执行单独的查询。在
但是,如果您将其编码为:
模板如下:
然后你只需一次选择就可以得到所有的信息,当你在一个页面上显示25个配置文件时,这会产生相当大的差异。在
相关问题 更多 >
编程相关推荐