Formset не дает мне 3 формы по умолчанию и получил KeyError при сохранении

Здравствуйте, у меня возникла следующая ошибка при использовании набора форм. Тип исключения: KeyError Значение исключения:
'module'
Эта ошибка возникает, когда я пытаюсь нажать сохранить на странице добавления. В настоящее время на моей веб-странице только 1 набор форм. Я читал в интернете, что по умолчанию их 3, но даже после того, как я добавил extra=3. Он все еще 1. Кто-нибудь может мне помочь?

Вот мои коды:

views.py

def device_add(request):
    if request.method == "POST":
        device_frm = DeviceForm(request.POST) ##Part A1
        dd_form = DeviceDetailForm(request.POST)
        #di_form= DeviceInterfaceForm(request.POST)
        di_formset = modelformset_factory(Device, DeviceInterface, fields=('moduletype', 'firstportid', 'lastportid'), extra = 3)
        di_form=di_formset(request.POST)
        if device_frm.is_valid():
        # Create and save the device
        # new_device here is the newly created Device object
            new_device = device_frm.save()
            if dd_form.is_valid():
                # Create an unsaved instance of device detail
                deviceD = dd_form.save(commit=False)
                # Set the device we just created above as this device detail's device
                deviceD.DD2DKEY = new_device
                # If you did not render the hostname for the device detail, set it from the value of new device
                deviceD.hostname = new_device.hostname
                deviceD.save()
                if di_form.is_valid():
                    deviceI=di_form.save(commit=False)
                    deviceI.I2DKEY=new_device
                    deviceI.save()
                    new_device=Device.objects.all()
                    return render(request, 'interface/device_added.html',{'devices':Device.objects.all()})
                
                return render(request,'interface/device_add.html',{'form':device_frm, 'dd_form': dd_form, 'di_form':di_form})
            return render(request,'interface/device_add.html',{'form':device_frm, 'dd_form': dd_form, 'di_form':di_form})
        return render(request,'interface/device_add.html',{'form':device_frm, 'dd_form': dd_form, 'di_form':di_form})
    else:
        device_frm = DeviceForm()
        dd_form = DeviceDetailForm()
        di_form = DeviceInterfaceForm()
        return render(request,'interface/device_add.html',{'form':device_frm, 'dd_form': dd_form, 'di_form':di_form})

ошибка

models.py

class DeviceInterface(models.Model):
    MODULE_ID_CHOICES = (
        ('TenGigabitEthernet','TenGigabitEthernet'), 
        ('FortyGigabitEthernet','FortyGigabitEthernet'),
        ('GigabitEthernet','GigabitEthernet'),
        ('Ethernet','Ethernet'),        
    )
    
    moduletype = models.CharField(max_length = 50,choices = MODULE_ID_CHOICES)
    firstportid = models.CharField(max_length=50)
    lastportid = models.CharField(max_length=50)
    I2DKEY = models.ForeignKey(Device, on_delete=models.CASCADE) ##The key to link up the tables

    def __str__(self):
        return self.moduletype

forms.py

class DeviceInterfaceForm(ModelForm):
    class Meta:
        model= DeviceInterface
        fields= ['moduletype', 'firstportid', 'lastportid']
        labels = {
            "moduletype":"Module Type",
            "firstportid": "First Port ID",
            "lastportid": "Last Port ID"
        }
        widgets = {
            
            'firstportid':forms.TextInput(attrs={
                'placeholder': 'e.g. TenGigabitEthernet1/0/1',
                'class':'form-control',
                'onchange':'portidChange(this.value)'
                }),
            'lastportid':forms.TextInput(attrs={
                'placeholder': 'e.g. TenGigabitEthernet1/0/48',
                'class': 'form-control',
                'onchange':'portidChange(this.value)'
                })
        }

device_add.html

{% for form in di_form %}
                                {{form}}
                                <span>
                            {%endfor%}
Вернуться на верх