为了账号安全,请及时绑定邮箱和手机立即绑定

Djangon 2.2 跨页面过滤单个数据集

Djangon 2.2 跨页面过滤单个数据集

MM们 2024-01-15 21:19:14
在我的 django 应用程序中,我有一个主页,在表格中显示每种类型的书籍数量,它还有一个搜索栏,允许按类型、标题或作者过滤书籍,然后将数据发布到搜索页面,允许在表格中查看图书条目。在搜索结果页面上,我希望能够使用一组扩展的搜索栏进一步过滤同一组数据 - 包括原始过滤器,以及发布日期和评级等过滤器。在扩展搜索中,我不想丢失原始搜索 - 因此,例如,如果我在主页上搜索恐怖类型,然后希望进一步过滤以仅在 sesrch 页面上包含评价较高的书籍,我不想丢失如果我不再添加过滤器的话,恐怖过滤器。这可能吗?本质上我想知道是否可以将不同的过滤器应用于单个视图?先感谢您
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

所以我猜您的第一选择是创建一个用于搜索的表单,然后呈现带有结果的页面。当我们正在讨论如何扩展它时,很高兴看到您如何实现这一目标。


在没有看到您对搜索功能的实现的情况下,我认为一个很好的例子是将搜索从基于表单的搜索转移到查询语言。


但我们不要超前!毕竟,让我们以简单的方式处理表单吧!


假设这是你的表格


from django import forms

class MyForm(forms):

   title #

   author #

   genre #

现在,每次标题、作者、流派选择都会随请求一起发送。那么简单的方法就是向第二个表单添加更多内容并在渲染时将当前状态传递给它!


from django import forms

class SecondForm(forms):

   title

   author

   genre

   language # new stuff!

因此,当您在函数处理程序/类视图中获取当前数据时,您可以从 MyForm 数据创建一个新表单 SecondForm,您可以在此处阅读更多信息。



def refine_search(request):

    # the form has been submitted so it's a safe assumption to have request.method == 'POSt'

    # but this will make it harder to share a link to a search page


    # load the search results

    # prepare the second form to be rendered on the result page

    form = SecondForm(request.POST)

    # now your can render your result page passing the form

    # and it will be rendered with the state from the previous!


查看完整回答
反对 回复 2024-01-15
?
慕神8447489

TA贡献1780条经验 获得超1个赞

我不确定您是否想要在扩展过滤器中选择流派?因为如果是的话,我看不到问题......?如果不是,为什么不使用隐藏输入来传递流派呢? forms.CharField(widget=forms.HiddenInput())



查看完整回答
反对 回复 2024-01-15
?
临摹微笑

TA贡献1982条经验 获得超2个赞

django 可以使用许多技术在视图之间传递参数。

查看完整回答
反对 回复 2024-01-15
  • 3 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信