这是一件非常奇怪的事情,因为我知道|操作符应该在不复制对象的情况下创建两个queryset的并集。我正在尝试执行查询搜索,并获取要在页面上显示的对象集。其中一套是用来装柱子的。
以下是我的代码片段:
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)
<QuerySet []>
<QuerySet [<Post: Post1>]>
<QuerySet [<Post: Post1>, <Post: Post1>, <Post: Post1>]>
如果你想知道我为什么要按标签和标题拆分post_列表,我原来有:
post_list = Post.objects.filter(Q(tags__slug__icontains=query) | Q(title__icontains=query))
<QuerySet [<Post: Post1>, <Post: Post1>, <Post: Post1>]>
都一样。你知道为什么会这样吗?