Django:忽略查询中特定查询的空格

2024-05-07 05:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

输入:OFG 5T4 WR4 2-3 未给出ofg5t4wr42-3的任何结果。在

然而,这就是ticket_reference保存在我的数据库中的方式,而我将其显示在输入中的票证上,以使其更易于阅读。我可以用任何其他“filter”替换ticket_reference__icontains来“忽略”票证引用查询的空格吗。在

def queryset(self, queryset):
    cleaned_data = self.cleaned_data

    # Search
    search = cleaned_data.get('search')
    if search:
        queryset = queryset.filter(
            Q(company_name__icontains=search) |
            Q(first_name__icontains=search) |
            Q(last_name__icontains=search) |
            Q(email__icontains=search) |
            Q(ticket_reference__icontains=search)
        )

Tags: nameself数据库searchdatafilterticket票证
1条回答
网友
1楼 · 发布于 2024-05-07 05:26:15

您可以这样删除空白:

def queryset(self, queryset):
    cleaned_data = self.cleaned_data

    # Search
    search = cleaned_data.get('search')
    if search:
        queryset = queryset.filter(
            Q(company_name__icontains=search) |
            Q(first_name__icontains=search) |
            Q(last_name__icontains=search) |
            Q(email__icontains=search) |
            Q(ticket_reference__icontains=search.replace(" ", "")
        )

请注意,这仍然是相当有限的,例如搜索“John Doe”将而不是找到一个名为“John”、last_name=“Doe”的条目(因为名字和姓氏都不包含“John Doe”)。在

如果您使用的是PostgreSQL,我建议您查看一下关于Full text search的Django文档。在

相关问题 更多 >