如何将用户添加到用户查询集中

时间:2018-08-28 10:11:08

标签: django

我吸引了所有关注的用户,其中除已登录用户外,所有用户都在场。

def FeedListView(request):
    my_users=request.user.following.all()
    my_users.append(request.user)
    print(my_users)
    query=FeedDetail.objects.filter(user__in=my_users)
    return render(request,'feed/feed_list.html',{'objects':query})

我无法追加查询列表,但对于查询,我也希望它为my_users中不存在的请求用户过滤 谢谢

3 个答案:

答案 0 :(得分:1)

Phillip Watts的答案是正确的,但它使用2个查询。 如果您担心效率问题,可以使用Q operator

from django.db.models import Q
FeedDetail.objects.filter(
    Q(user=request.user) 
    | Q(user__in=request.user.following.all())
)

答案 1 :(得分:1)

尝试附加 用户ID ,而不是其对象/查询集。

def FeedListView(request):
    my_users_id = list(request.user.following.all().values_list('id', flat=True))
    my_users_id.append(request.user.id)
    query = FeedDetail.objects.filter(user__id__in=my_users_id)
    return render(request, 'feed/feed_list.html', {'objects': query})

参考
1. SO帖子-How to add an model instance to a django queryset?
2. values_list() -- [Django Doc]

答案 2 :(得分:-1)

您需要先将查询集转换为列表,如下所示:

def FeedListView(request):
    my_users_list = list(request.user.following.all())
    my_users_list.append(request.user)
    print(my_users_list)
    query=FeedDetail.objects.filter(user__in=my_users_list)
    return render(request,'feed/feed_list.html',{'objects':query})