使用相应的外键值Django自动填充表单上的数据

时间:2018-07-17 21:27:53

标签: django-models django-forms django-views django-database

我正在尝试使用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。

0 个答案:

没有答案