1

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

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

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

4

1 回答 1

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() 并以这种方式返回查询集,以便您可以从经过验证的表单中访问查询集。

于 2012-06-28T18:32:07.170 回答