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

2024-05-23 18:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的django应用程序中,我有一个主页,显示表格中每种类型的图书数量,还有一个搜索栏,允许按类型、标题或作者筛选图书,然后将数据发布到搜索页面,并允许查看表格中的图书条目

在搜索结果页面上,我希望能够使用扩展的搜索栏进一步过滤同一组数据,包括原始过滤器,以及发布日期和评级等过滤器

在扩展搜索中,我不想丢失原始搜索-例如,如果我在主页上搜索恐怖类型,然后希望进一步过滤,以便在SESCRH页面上只包含高评级的书籍,如果我不再次添加过滤器,我不想丢失恐怖过滤器

这可能吗?本质上,我想知道你是否可以对一个视图应用不同的过滤器

先谢谢你


Tags: 数据django应用程序标题过滤器类型数量条目
3条回答

django可以使用许多技术在视图之间传递参数。e、 g.获取参数:https://stackoverflow.com/questions/150505/capturing…或使用会话:https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Sessions

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

因此,我猜您的第一选择是为搜索创建一个表单,然后使用结果呈现页面。当我们正在讨论如何扩展它时,很高兴看到您是如何做到这一点的

如果没有看到搜索功能的实现,我认为一个很好的例子是将搜索从基于表单的语言移动到查询语言

但我们不要超越自己!毕竟,让我们用简单的方法来处理表单吧

假设这是你的表格

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,您可以阅读更多here


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!

相关问题 更多 >