我正在尝试找到在我的网站中设计以下搜索页面的最佳方式:
我有一个预先计算的大量神经元测量数据库。 每个测量对象为每个神经元保存超过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)
我无法指定每次获得哪种形式。
那么实现这种搜索功能的正确设计方法是什么?
谢谢。
答案 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
希望这有帮助。