在Django中使用select小部件从Postgres数据库获取数据

时间:2019-01-06 17:07:34

标签: python django postgresql

我对于Django,Stackoverflow和一般的编码都是新手,所以我将不胜感激。

我正在尝试向我的网站添加一个表单,该表单将仅具有选择字段。用户选择所有选项后,我想将它们重定向到另一个页面,在该页面中,根据所有选择,我将从数据库的多个表中返回不同的信息(所有选择的选项共同影响表中显示的信息)。

我知道这个示例很尴尬,所有这些都是为了最终了解我想要实现的目标。

一个例子: 第一页有3个选项:

  1. 图书类型
  2. 城市
  3. 年龄

重定向页面具有三个表:

  1. 这个年龄段的人们都在这个城市读过最多的书
  2. 该城市的图书馆列表,根据该类型的书籍数量排序
  3. 如何注册排名前三的图书馆

用户不会以任何方式修改数据库,因此我认为表单可以具有GET方法。

所以我的问题是从用户那里获取值并基于该值从数据库中获取唯一值的最佳方法是什么?我想为每个表格返回一个列表,我计划针对每个城市,每个年龄段和每个流派定期更新该列表。

我现在正在尝试使用选择窗口小部件执行此操作。目前,我什么也不返回,因为我不确定如何从用户那里获取数据并使用它。

forms.py:

class MyForm(forms.Form):

    select1 = forms.ChoiceField(widget=forms.Select,
              choices=Select1.objects.all().values_list('id', 'name'))
    select2 = forms.ChoiceField(widget=forms.Select, 
              choices=select2.objects.all().values_list('id', 'name'))
    select3 = forms.ChoiceField(widget=forms.Select, 
              choices=select3.objects.all().values_list('id', 'name'))

views.py

class Page(TemplateView):
    template_name = 'project/index.html'

    def get(self, request):
      form = MyForm()
      return render(request, self.template_name, {'form': form})

html:

<select name="{{ form.select1.name }}">
    <option class="dropdown-menu" value="" disabled selected>Please 
    select</option>
    {% for choice in form.select1.field.choices %}
        <option value="{{ select1.0 }}">{{ select1.1 }}</option>
    {% endfor %}
</select>

,其他两个选择使用相同的代码。由于设计网站的方式,我分别绘制了它们。

0 个答案:

没有答案