通过多个表单字段搜索?

时间:2012-06-28 18:25:26

标签: django django-models

我正在显示一个包含4个文本框的页面,每个文本框将用户输入的值存储到一个单独的变量中。 我的数据库有4列,每列对应一个文本框的变量。

我想这样做: 用户可以在1,2,3或全部4个文本框中输入值,我想根据他们输入的每个值修剪搜索结果。每个文本框都是可选的。

我该怎么做?我是Django的新手,我只知道如何使用一个搜索词进行搜索。

1 个答案:

答案 0 :(得分:2)

我认为你需要Q对象。请参阅:https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

来自文档:

Poll.objects.get(
    Q(question__startswith='Who'),
    Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
)

转换为:

SELECT * from polls WHERE question LIKE 'Who%'
     AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')

您可以从已清理的表单中填充Q查询 - 您甚至可能希望覆盖clean()并以这种方式返回查询集,以便您可以从验证的表单中访问查询集。