我有一个下拉(选择)表单,用于从数据库表中提取选择选项。选项几乎一直在变化,具体取决于某个变量。
我需要在下拉列表的底部添加一个选项,它始终是相同的。会说“更多选择”的东西。有任何想法吗?谢谢!
答案 0 :(得分:2)
这很容易通过覆盖您正在使用的Form子类上的__init__
来实现。它也应该在ModelForm上同样有效。我不确定你是如何基于这个问题填充选择的。
class ChoiceForm(Form):
choice = ModelChoiceField(queryset=MyModel.objects.all())
def __init__(self, *args, **kw):
super(ChoiceForm, self).__init__(*args, **kw)
# Add to choices iterator
choice_field = self.fields['choice']
choice_field.choices = list(choice_field.choices) + [(0, 'More Options')]
使用<p>
标记进行渲染时,会显示以下内容:
<p>
<label for="id_choice">Choice:</label>
<select name="choice" id="id_choice">
<option value="" selected="selected">---------</option>
<option value="0">More Options</option>
</select>
</p>
但请注意,此字段选项将在您创建后修复。如果您传递的查询集的结果将被更改,则正常的ModelChoiceField将自动更新其选择。
答案 1 :(得分:0)
我会这样解决: 1-按目前的方式渲染选择框 2-创建两个隐藏的选择框,1选择有限,另一个选择完整列表 3-当用户点击“更多选项”按钮时,所有选项都被刷新,并且将使用完整选择框中的选项重新填充它。 4-作为选项,您可能希望用户返回“更少的选项”,在这种情况下,您只需要再次刷新选项并从隐藏的选择框中加载有限的选项。
为了达到这个目的,你只需要模板来渲染2个选择框(少选择和更多选项)和style =“display:none”css属性,然后编写js按钮点击事件(I通常会在jQuery中进行切换。
希望它有所帮助,只需询问您是否需要一些代码示例