在Django中,通过搜索框和类别一次搜索和过滤?
我想知道你能否帮助我。在Django中,通过搜索框和类别一次搜索和过滤?
我有一个数据列表将显示在一个页面上。有一个简单的搜索框,一个类别列表和一个标签列表,可以用来过滤数据列表。我试图从头开始构建它(所以它不需要JavaScript),但最终它会提交搜索条件并使用Ajax返回一个新列表。所以我有我的数据库中的类别列表('大','小'等),我有我的数据库中的标签列表('木','黄铜')。标签用于过滤更多类别中的内容。然后我有一个搜索框。理想情况下,我希望用户能够有效地勾选他们想要的类别,勾选他们想要的标签,并且可能会搜索关键字,然后提交所有数据以便查询并可以返回过滤数据的新列表。
我不是一个Django的专家,我被困在如何以及在哪里做...这是什么Django的方式吐出类别作为复选框列表,标签作为复选框列表和带提交按钮的搜索框......提交后,我可以获取所有数据并对数据库进行必要的查询?我不太明白我该怎么做......我一直在看Django Docs和Django Book几天,我做事情的方式似乎没有列出。
请任何帮助都是太棒了。
吐出的类别为复选框列表,
标签为复选框列表和一个提交按钮
查寻
这是一个<form>
在你的HTML页面中。它可能与Django模型中的任何内容都不匹配。这是一个或多或少手工构建的独特形式。
我可以采取所有的数据并对数据库做必要的查询吗?
这是一个查看功能。
你可能会有这样的事情。
objects= SomeModel.objects
if request.GET ... has categories ...
objects = objects.filter(... categories ...)
if request.GET ... has tags ...
objects = objects.filter(... tags ...)
if request.GET ... has search ...
objects = objects.filter(something__contains(search))
return render_to_response(... etc. ...)
我正在做的事情似乎并没有上市的方式。
你超出了这里的教程。
怎么办?
做整个教程。一路通过。每一步。它似乎不能解决您的问题,但您必须完成整个教程。
设计你的模型。你没有提到问题中的模型。这是绝对最重要也是最基本的事情。
-
为该模型创建默认管理界面。获取默认的管理界面,以完成您想要做的事情。它有很棒的搜索,类别和标签过滤。
为了让默认管理员工作,您需要设计相当复杂的模型和表单功能。您可能必须将方法功能添加到您的模型以及选择项和其他优点。
在您的管理页面与您想要的非常接近之后,您可以编写自己的自定义视图。
每个单个复选框具有不同的名称( 'category_option_1', 'category_option_2' 等)...我如何阅读这些?我不能只是把request.POST ['category_option_n']?
真的吗?为什么你的问题说?
你问这个吗?
for k in range(1024):
name = 'category_option_{0}'.format(k)
# Use request.POST.get(name,None) to build a `Q` object
lott感谢您的回复。我想我需要手动完成此操作。我已经在管理员中正确设置了所有的东西......这是用户方面的问题。因为我使用的是复选框(所以可以选择多个类别或标签),每个复选框都有不同的名称('category_option_1','category_option_2'等),这些都是我被困在视图部分的地方......怎么做我读过这些?我不能只是把request.POST ['category_option_n']?我需要对页面上的每个复选框进行POST检查,这看起来不太好。 – littlejim84 2010-08-03 10:22:45
@ littlejim84:“这就是我被困在视图部分的地方”。然后实际上在你的问题中说这个。不希望我们猜测这是你卡住的地方。 – 2010-08-03 12:35:21
洛特对不起,看起来我冒犯了你。在你给出你的答案后,我遵循了这一点,并意识到我被卡在了我评论的那一点上。你的回答有助于从头开始,让球滚动,然后我需要进一步细化。谢谢。 – littlejim84 2010-08-03 12:59:16