Это действительно странная вещь, потому что я понимаю | оператор должен создать объединение двух наборов запросов без дублирования объектов. Я пытаюсь выполнить поиск запроса и получить наборы объектов для отображения на странице. Один из этих наборов предназначен для сообщений.
Вот фрагмент моего кода:
if query:
block_list = Block.objects.filter(Q(name__icontains=query) | Q(tags__slug__icontains=query))
user_list = CustomUser.objects.filter(Q(first_name__icontains=query) |
Q(last_name__icontains=query) | Q(username__icontains=query))
post_list = Post.objects.filter(Q(tags__slug__icontains=query))
post_list_by_title = Post.objects.filter(Q(title__icontains=query))
print(post_list)
print(post_list_by_title)
print(post_list | post_list_by_title)
Вот результат выполнения трех команд печати в cmd.
<QuerySet []>
<QuerySet [<Post: Post1>]>
<QuerySet [<Post: Post1>, <Post: Post1>, <Post: Post1>]>
Если вам интересно, почему я разделил post_list по тегу и post_list по заголовку, у меня изначально было:
post_list = Post.objects.filter(Q(tags__slug__icontains=query) | Q(title__icontains=query))
Но когда я печатал post_list, он все равно получился:
<QuerySet [<Post: Post1>, <Post: Post1>, <Post: Post1>]>
все тоже самое. У вас есть идеи, почему это может быть?