Django过滤器返回以输入查询开头的结果

0 投票
2 回答
541 浏览
提问于 2025-04-18 17:37

我遇到了一个关于django查询结果的问题。

我有一个名为 Classified 的表格,我根据输入的查询内容 q 来进行搜索,具体操作如下:

def search(request):
    q = request.get['query']
    result = Classified.objects.filter(Q(name__icontains=q) | Q(category__icontains=q))
    return render_to_response('search.html', {'result':result}, request)

举个例子,假设 Classified.name 里有 AmityAmbulanceCamdenCameroon 这几个名字。如果我输入 am 作为查询内容,根据上面的过滤条件,它会返回这四个名字。

我想问的是,怎么才能只返回 AmityAmbulance 这两个结果呢?因为这是我的需求,而且这样可以让我的搜索页面更有效率。

2 个回答

1

我觉得 istartswith 这个过滤器会对你有帮助。你可以在这里查看详细信息:https://docs.djangoproject.com/en/dev/ref/models/querysets/#std:fieldlookup-istartswith

2

照你现在的做法去做,不过用 istartswith 代替 icontains。

https://docs.djangoproject.com/en/dev/ref/models/querysets/#istartswith

撰写回答