我吸引了所有关注的用户,其中除已登录用户外,所有用户都在场。
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中不存在的请求用户过滤 谢谢
答案 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})