从django中的几种形式收集信息

时间:2013-07-15 19:54:33

标签: python django django-forms formset

我正在创建简单的搜索引擎,所以我在页面顶部有一个输入文本字段,旁边有“搜索”。这是一种形式,例如/q=search%20query“生成”。

在侧边栏中,我有一个面板,其中包含带过滤器的其他表单,请说fromto。我希望有可能创建像/q=search%20query&from=20&to=50这样的链接。我想知道第一种形式的按钮应该从第二种形式收集信息。

我在某处读到了类似于formset的内容,但是我没有找到可以用来做类似事情的信息。

2 个答案:

答案 0 :(得分:0)

我认为通过制作包含搜索词和任何过滤器的表单最容易解决这个问题。您可以将表单元素放在任何位置。

你的表格必须是这样的:

from django import forms

    class MySearchForm(forms.Form):
        FILTERS = (("lt20", "Less than 20"),
                    ("20to50", "Twenty to fifty"),
                  )
        term = forms.CharField()
        filters = forms.MultipleChoiceField(widget = CheckBoxSelectMultiple, choices = FILTERS)

然后您必须手动显示表单,以便您可以在模板中将其拆分。换句话说,您不必使用{{form.as_p}}之类的过滤器,而是必须{{form.term}}{{form.filters}}

您还可以在模型中定义过滤器,以便您可以更轻松地更改它们,添加它们等,st:

# in models.py
class = Filters(models.Model):
    name = models.CharField(max_length=20)

# in your form definition,
from your_app_name.models import Filters

class MySearchForm(forms.Form):
    term = forms.CharField()
    filters = forms.ModelChoiceField(queryset = Filters.objects.all(), widget = CheckBoxSelectMultiple)

答案 1 :(得分:0)

我想出了一个想法,我可以在第一时间创建其他隐藏字段,可以通过JavaScript与第二种形式的字段同步。这将创建小的冗余,但似乎很容易实现。

这是个好主意吗?