基于dropdown的Django动态创建表单

2024-04-24 09:43:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究Django,问题和如何,有没有办法根据下拉选择生成动态表单? 我的表单真的很简单,用户需要更新设备信息。 而不是一次提交一个表单,我想提供下拉选择设备数量的选项,比如10,应该有10个新的表单条目。在

在1个表单中有4个字段需要输入。 我启动了一些东西,但坚持通过html查看和显示

型号

class Devices(DeviceINFO, models.Model):
    name = models.ForeignKey(DeviceTYPE, on_delete=models.SET_NULL, null=True)
    item1_link1 = models.CharField(max_length=5, blank=True, default='')
    item1_link2 = models.CharField(max_length=5, blank=True, default='')
...

形式:

^{2}$

视图:

def DevicesView(request, *args, **kwargs):
    template_name = 'DeviceView.html'
    seq = [2, 4, 6, 8, 10]
    form = Devices_form(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            print(form.cleaned_data['seq'])
            context = { 'num': form.cleaned_data['seq'] }

    return render(request, template_name, {'seq': seq})

这样对吗?如何以html格式显示?提前谢谢你的帮助。在


Tags: nameformtruedefault表单modelsrequesthtml
1条回答
网友
1楼 · 发布于 2024-04-24 09:43:51

您可以根据请求的数字创建一个空表单列表,然后通过迭代列表在模板中呈现它们。在

def DevicesView(request, *args, **kwargs):
    template_name = 'DeviceView.html'
    seq = [2, 4, 6, 8, 10]
    form = Devices_form(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            print(form.cleaned_data['seq'])
            no_of_forms = form.cleaned_data['seq']
            list_of_forms = [device_form() for i in range(no_of_forms)]
            args = {'forms':list_of_forms}
            return render(request, template_name, args)

    return render(request, template_name, {'seq': seq})

然后在HTML中,类似于:

^{pr2}$

相关问题 更多 >