Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将特定对象(但类型相同)附加到Django中的筛选对象_Python_Django_Django Queryset - Fatal编程技术网

Python 将特定对象(但类型相同)附加到Django中的筛选对象

Python 将特定对象(但类型相同)附加到Django中的筛选对象,python,django,django-queryset,Python,Django,Django Queryset,如果我得到一个像这样的User对象列表 special_user_list = User.objects.filter( userprofile__user_type = 'special' ) 我如何附加也是用户的request.user(当前登录的用户) 我知道我可能会做类似的事情 special_user_list = User.objects.filter( Q( userprofile__user_type = 'special' ) | Q( pk = reques

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

special_user_list = User.objects.filter( userprofile__user_type = 'special' )
我如何附加也是
用户的
request.user
(当前登录的用户)

我知道我可能会做类似的事情

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

但是我不确定上面的代码是否会双重包含
request.user
(如果
request.user.get\u profile()。user\u type='special'
)。另外,我希望避免使用复杂的SQL语句来添加用户,因为我已经知道用户的身份。

数据库这样做比Python这样做更便宜

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

真正地过滤查询集不仅仅是一个列表吗?我不能使用Python的
append()
?不行。经过过滤的
QuerySet
仍然是
QuerySet
。它的表示看起来就像一个列表。Ignacio,我想@hobbes3不需要在这里执行
.distinct()
,因为只剩下一个了,可能没有。但我的判决有效。