Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于下拉选择的Django动态创建表单_Python_Django_Forms_Dynamic_Generate - Fatal编程技术网

Python 基于下拉选择的Django动态创建表单

Python 基于下拉选择的Django动态创建表单,python,django,forms,dynamic,generate,Python,Django,Forms,Dynamic,Generate,我正在和Django一起工作,问题和如何,有没有办法根据下拉选择生成动态表单? 我的表单非常简单,用户需要更新设备信息。 我不想一次提交一个表单,而是想提供下拉选择设备数量的选项,比如说10个,应该有10个新表单条目 在1个表单中,需要输入4个字段。 我开始做一些事情,但仍然坚持通过html查看和显示 模型 表格: 视图: 是这样吗?如何在html中显示?提前感谢您的帮助。您可以根据请求的数量创建一个空表单列表,然后通过迭代列表在模板中呈现它们 def设备视图(请求,*args,**kwargs

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

在1个表单中,需要输入4个字段。 我开始做一些事情,但仍然坚持通过html查看和显示

模型

表格:

视图:


是这样吗?如何在html中显示?提前感谢您的帮助。

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

def设备视图(请求,*args,**kwargs):
模板名称='DeviceView.html'
序号=[2,4,6,8,10]
表单=设备\表单(request.POST或None)
如果request.method==“POST”:
如果form.is_有效():
打印(表格数据['seq'])
表单数量=表单。已清理的表单数据['seq']
表单列表=[范围内i的设备表单()(没有表单)]
args={'forms':表单列表}
返回渲染(请求、模板名称、参数)
返回呈现(请求,模板名称,{'seq':seq})
然后在HTML中,类似于:

{%for forms%}
{{form.as_p}}
{%endfor%}

Hello Lewis,如何保存多表单生成数据?
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='')
...

class Devices_form(forms.ModelForm):
    class Meta:
        model = Devices
        fields = '__all__'

    def __init__(self, n, *args, **kwargs):
        super(Devices_form, self).__init__(*args, **kwargs)
        for i in range(0, n):
            self.fields["item%d_link1" % i] = forms.CharField(max_length=20, blank=True, default='')
            self.fields["item%d_link2" % i] = forms.CharField(max_length=20, blank=True, default='')
... 

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})