将特定对象(但相同类型)附加到Django中的过滤对象

时间:2012-04-12 06:48:10

标签: python django django-queryset

如果我得到这样的User个对象列表

special_user_list = User.objects.filter( userprofile__user_type = 'special' )

如何追加request.user(当前登录的用户),这也是User

我知道我可能会做类似

的事情
special_user_list = User.objects.filter(
    Q( userprofile__user_type = 'special' ) |
    Q( pk = request.user.pk )
)

但我不确定上述代码是否可以加倍request.user(如果request.user.get_profile().user_type = 'special'也是如此)。另外,我想避免使用复杂的SQL语句来访问数据库以添加用户,我已经知道了用户身份。

1 个答案:

答案 0 :(得分:2)

数据库执行此操作比使用Python更便宜。

special_user_list = User.objects.filter(
    Q(userprofile__user_type='special') |
    Q(pk=request.user.pk)
).distinct()