Django从具有空输入的多个字段中过滤

问题描述 投票:0回答:1

我是Django的新手,我现在正试图处理基于特定领域的过滤问题。 React.js用于前端,Django用作RESTful API。

对于前端,允许用户选择基于号码或名称进行搜索。信息已成功收集。以下代码只是为了更好地理解并且不完整。

<input type="text" /><label>Search by number</label>
<input type="text" /><label>Search by name</label>

对于后端,响应应根据输入信息(数字或名称)过滤查询集。但是,当我浏览文档时,我注意到要进行过滤,应该提供所有过滤字段。

Entry.objects.filter(number=123, name="abc")

如何根据前端的给定信息进行过滤,例如,如果用户选择按名称搜索Django:

Entry.objects.filter(number=123)

如果用户选择按名称搜索,那么Django会:

Entry.objects.filter(name="abc")

我知道我实际上可以创建两个不同的API端点,因此数字和名称不会相互干扰。但是,如果有更多的过滤器字段,那么基于每个字段编写每个API绝对是低效的。

有人可以帮我这个吗?如果我清楚地解释清楚或者应该提供更多信息,请告诉我。

python django reactjs filter
1个回答
1
投票

您可以使用Q对象来过滤结果

像下面的东西

from django.db.models import Q
Entry.objects.filter(Q(number=123) | Q(name="abc"))

有更多方法可以使用Q对象参考the docs

© www.soinside.com 2019 - 2024. All rights reserved.