Py学习  »  Django

在Django中,|运算符在我将两个queryset合并在一起时创建重复项

Evelyn Chin • 4 年前 • 837 次点击  

这是一件非常奇怪的事情,因为我知道|操作符应该在不复制对象的情况下创建两个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>]>

都一样。你知道为什么会这样吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57014
 
837 次点击  
文章 [ 2 ]  |  最新文章 4 年前