我已经做了很多搜索,但似乎这种特殊的表单创建品牌在任何地方都没有得到解决。
我正在创建一个搜索页面,该页面在数据库中查询属性等于或高于给定阈值的所有元素的集合。现在我有一个简单的表单,它有 5 个属性,每个属性有 5 个阈值,每个都有自己的复选框,即
attrib_1 X threshold 1 X threshold 2 X threshold 3 X threshold 4 X threshold 5
attrib_2 X threshold 1 X threshold 2 X threshold 3 X threshold 4 X threshold 5
... etc ...
HTML 看起来像这样:
<div class= "form-inline">
<label>Attribute 1</label>
<label class="checkbox inline">
<input type="checkbox" name="attrib 1" value="1"> Very Negative
</label>
<label class="checkbox inline">
<input type="checkbox" name="attribt 1" value="2"> Negative
</label>
<label class="checkbox inline">
<input type="checkbox" name="attrib 1" value="3"> Nonfactor
</label>
<label class="checkbox inline">
<input type="checkbox" name="attrib 1" value="4"> Positive
</label>
<label class="checkbox inline">
<input type="checkbox" name="attrib 1" value="5"> Very Positive
</label>
</div>
然后我使用 GET 参数中的信息搜索数据库。当我显示搜索结果时,确保复选框反映搜索查询的优雅方法是什么?我希望用户会检查一些框,查看结果,然后再检查一些以优化搜索,我不希望他们每次提交搜索时都必须重新检查所有框。
我考虑了几种方法来做到这一点。我可以为每个复选框使用 if/else 语句并适当地填写选中的属性。这会起作用,但看起来不优雅,不是很干燥,并且会导致模板非常复杂。或者,在视图中,我可以创建一个数据结构(列表的字典或元组的列表,可能是列表的字典),每个复选框都有“已选中”或空字符串。这将产生一个更干净的模板,但我怀疑有一种更合适的 Django/Pythonic 方式来做到这一点。我还考虑了一种自定义形式,但这似乎是试图在圆孔中安装一个方形钉。
那么,确保基于 GET 参数正确检查搜索表单上的复选框的优雅方法是什么?