【发布时间】:2017-08-23 12:21:11
【问题描述】:
在我的 Django 应用程序中,我需要为用户列表(称为 user_ids)显示他们的:
username、avatar 和 score。
username 是从 User 模型中检索到的,而 avatar 和 score 存在于 UserProfile 模型中(它具有指向 User 模型的一对一字段,称为 @ 987654330@)。
目前我的方法是获取完整的对象(见下文),即使我只需要来自两个模型的 3 个属性。
对我来说,只检索必填字段而不是其他的最有效方法是什么?现在我知道我可以做到:
usernames = User.objects.filter(id__in=user_ids).values_list('username',flat=True)
scores_and_avatars = UserProfile.objects.filter(user_id__in=user_ids).values_list('score','avatar')
但是,这些给了我单独的查询集,所以我不能将它们作为一个统一的 object_list 进行迭代,并在 Django 模板中显示每个用户的 username、score 和 avatar。那么,检索这些信息并将其组合在一起的最有效、最轻量级的方法是什么?
目前,我正在执行以下操作来检索这三个字段:queryset = User.objects.select_related('userprofile').filter(id__in=user_ids)
【问题讨论】:
-
我认为这是使用 select_related 最有效的方法