针对搜索表单查询跨Django模型进行搜索

时间:2018-12-07 03:28:17

标签: python django forms

我一直在阅读Django表单,并且对如何继续感到困惑。我正在创建一个forms.py,其目的是在表单级别上,用户可以输入一个字符串查询,然后针对其中一个模型运行此查询,具体取决于从模型的下拉菜单中选择哪个模型。形成。 HTML中的内容如下:

<div class="row">
<form class="col s12">
  <div class="row">
    <div class="input-field col s6" >
      <input type="text" class="validate" list="option">
    </div>

    

  <option value="1">model 1</option>
  <option value="2">model 2</option>
  <option value="3">model 3</option>
</select>

因此本质上,查询应该针对views.py中的适当模型运行。每个模型都有其自己的视图功能。另外,我应该如何构造我的urlconf来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我可以通过在视图中执行以下操作来做到这一点:

class MySearchView(View):
    template_name = 'my_app/my_template.html'
    model_dict = {'1':MyFirstModelClass, '2': MySecondModelClass, '3': MyThirdModelClass}
    def get(self, request, *args, **kwags):
        my_search_form = MySearchFormClass(request.GET)
        if form.is_valid():
            model_class_to_search = model_dict[form.cleaned_data['name_of_model_form_field']]
            #run query here on model_class_to_search
            model_class_to_search.objects.filter(field1=form.cleaned_data['name_of_form_search_field'])