我正在尝试使用Django自动填充表单数据库。 因此,当用户键入vlan_id时,我想从现有远程数据库中自动填充相应的数据字段,例如子网,vip,主ip,备份ip,nat。如果数据库为空,则无需任何操作。
因此,无需提交表单,只要用户输入vlan_id,所有信息都应填写在表单上。
起初,我正在研究django自动完成库,但是我不确定要使用此库,因为我的表单不是下拉列表,但必须从字面上填充到输入字段中。
还有一些供用户手动更改/键入信息的选项,即使该信息是自动填充的也是如此。
如果必须使用AJAX ..,请教我如何将其实现到我的代码中。
views.py
def db1 = Sql.newInstance('jdbc url 1', 'user 1', 'password 1', 'driver 1')
def db2 = Sql.newInstance('jdbc url 2', 'user 2', 'password 2', 'driver 2')
def table1 = db1.dataSet('table name 1')
def table2 = db2.dataSet('table name 2')
table1.rows().each{ table2.add(it) }
db1.close()
db2.close()
模板
def addDatabase(request):
FormSet = formset_factory(TopologyForm)
yamlFormSet = FormSet()
gateways = Gateways.objects.all()
vlans = Vlans.objects.all()
subnets = Subnets.objects.all()
vlan_query_results = Vlans.objects.select_related('vlan_id').values_list('subnets__subnet', 'gateways__vip', 'gateways__master', 'gateways__backup', 'gateways__nat').order_by('vlan_id')
# There should be at least one data
if request.method == "POST":
yamlFormSet = FormSet(request.POST)
if yamlFormSet.is_valid():
for form in yamlFormSet:
# formset => when form is empty, it returns true, so it need cleaned_data
if form.cleaned_data:
form.save()
return render(request, "niro/output.html", {'formset': yamlFormSet, 'vlan_query_results': vlan_query_results})
context = {'yamlFormSet': yamlFormSet, 'vlan_query_results': vlan_query_results}
return render(request, "niro/addDatabase.html", context)
对于其他字段,我有相同的div。