我在表单类中有以下小部件;
class InputParametersForm(forms.Form):
sqlConnection = SQLSeverConnection('MSSQLServerDataSource','default_user','password123!','HD')
tableChoices = sqlConnection.getTableNames()
TableName = forms.Select(widget=forms.SelectMultiple,
choices=tableChoices)
ColumnName = forms.Select(widget=forms.SelectMultiple)
StartDateTime = forms.DateTimeInput(widget=forms.DateTimeInput)
EndDateTime = forms.DateTimeInput(widget=forms.DateTimeInput)
class Meta:
model = SelectionHistory
fields = ("TableName","ColumnName","StartDateTime","EndDateTime")
我目前的模板是;
<script>
$('#id_tables').change(function()
{
tableSelectionChanged();
})
function tableSelectionChanged()
{
var selected_table = $('#id_tables').selectedIndex;
$.get('/historicaldata/input_parameters/', {selected_table : selected_table}, function(data){
$('#id_columns').val(data);
});
}
</script>
</head>
<body>
<h1>What would you like to see?</h1>
<form id="input_parameters" method="post" action="#">
{% csrf_token %}
<select name="tables" id="id_tables" size="5">
{% for table in form.tableChoices %}
<option value="{{table.id}}">{{table}}</option>
{% endfor %}
</select>
<select name="columns" id="id_columns" size="5">
{% for column in form.columnChoices %}
<option value="{{column.id}}">{{column}}</option>
{% endfor %}
</select>
<input type="submit" value="submit" />
</form>
</body>
我想添加表单中定义的小部件,而不是我在模板中添加的选择类型对象。我如何在语法方面做到这一点?然后我将如何访问小部件事件处理程序来复制我已经拥有的ajax / jquery?
从我迄今为止搜索的主题开始,我一直在努力寻找具体的内容。
如果你有时间,我真的很感激一个例子。
谢谢!
答案 0 :(得分:0)
你应该按照django的建议渲染表单,而不是像你那样构建HTML。
有关详细说明,请参阅this文档。
总结一下,您可以使用{{form
}}或{{form.as_p}}
或{{form.as_table}}
等呈现表单。
您还可以使用
渲染单个字段{%for field in form %}
{{field}}
{%endfor%}
和其他变种。