设计自定义搜索页面

时间:2016-05-30 14:31:07

标签: python django

我正在尝试找到在我的网站中设计以下搜索页面的最佳方式:

我有一个预先计算的大量神经元测量数据库。 每个测量对象为每个神经元保存超过20个场。 搜索页面应为测量对象

中的每个字段提供两个值[min-max]的范围

例如(简化模型):

class Measurment(models.Model):

    width = models.FloatField('Width', null=True, blank=True)
    height = models.FloatField('Height', null=True, blank=True)
    depth = models.FloatField('Depth', null=True, blank=True)

搜索页面应该有6个文本框(每个字段2个)

情况是我的测量有很多领域,还没有完成,即他们仍在测试中,其中一些可能被排除在外,其他可能会被添加,所以我不想改变每次我在测量中尝试不同的字段时搜索页面。

所以我认为搜索页面中的输入应该根据测量模型中的字段自动生成,并为每个字段生成两个输入。 我为Measurement模型创建了一个表单,但这会为每个字段提供一个输入,所以我想在搜索页面中创建两个表单,一个用于min_values,另一个用于max_values但是我无法获得每个表单通过POST数据

代码:

if request.method == POST:
        if 'btn_search' in request.POST:

            form_min = MeasureSearchForm(request.POST)
            min_values = form_min.save(commit=False)

            form_max = MeasureSearchForm(request.POST)
            max_values = form_max.save(commit=False)

我无法指定每次获得哪种形式。

那么实现这种搜索功能的正确设计方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

  • 根据您的ModelForm模型制作Measurement。 (比如MeasurementModelForm
  • 将它们作为两个不同的上下文变量传递。 context["form1"] = MeasurementModelForm()context["form2"] = MeasurementModelForm()
  • 在SAME form标记内的模板中渲染两个表单。

    <form method="post" ....>
    
         {{ form1 }}
         {{ form2 }}
    
    </form
    
  • 在您的观点中:

    if request.method == POST:
        form1_data = {key:query[key][0] for key in request.POST}
        form2_data = {key:query[key][1] for key in request.POST}
        form_min = MeasureSearchForm(form1_data)
        form_max = MeasureSearchForm(form2_data)
    
        # ...
    

OR

使用modelformsetfactory

希望这有帮助。

相关问题