所以我看了文件,看了几个答案,但我想我自己在这里搞糊涂了。在
我试图构建一个可以动态添加行的表。我的表行是从我的名为ModbusRegistersForm
的表单构造的。{我的理解基本上是通过添加一行来理解的。将这些动态添加的字段添加到表单中的方法是什么?由于每一行几乎都是ModbusRegistersForm
的重复,是否应该将它们都添加到ModbusRegistersForm
内的列表中?或者有什么具体的方法来解决这个问题?我目前正在研究表单集,但是从文档来看(至少对我来说)你需要预先定义你想要的extra
个表单的数量,这样它就不能工作了,因为它是动态的。在
class ModbusRegistersForm(forms.Form):
OPTIONS = (('1', '(01) Discrete Output Coils'),
('2', '(02) Discrete Input Contacts'),
('3', '(03) Analog Output Registers'),
('4', '(04) Analog Input Registers')
)
starting_address = forms.IntegerField(max_value=99999,
widget=forms.TextInput(attrs={
'placeholder': 'Starting address',
'class': 'form-control'
}))
ending_address = forms.IntegerField(max_value=99999,
widget=forms.TextInput(attrs={
'placeholder': 'Ending address',
'class': 'form-control'
}))
register_type = forms.ChoiceField(widget=forms.Select(attrs={
'class': 'form-control',
'id': 'register-type'
}),
choices=OPTIONS
)
offset = forms.IntegerField(max_value=9999,
required=False,
widget=forms.TextInput(attrs={
'class': 'form-control',
'placeholder': 'Address offset'
}))
class CreateModbusForm(forms.Form):
port = forms.IntegerField(label="TCP/IP Port:",
max_value=65535,
validators = [[RegexValidator(regex='\d{1,5}', message='Not a valid port', code='Invalid port')]],
widget=forms.TextInput(attrs={
'placeholder': 'Port',
'class': 'form-control',
'id': 'port',
}))
slave_id = forms.IntegerField(label="Slave ID:",
max_value=247,
widget=forms.TextInput(attrs={
'placeholder': 'Slave id',
'class': 'form-control',
'id': 'slave-id',
}))
ip_address = forms.CharField(label="IP Address",
max_length=16,
widget=forms.TextInput(attrs={
'placeholder': 'Modbus IP address',
'class': 'form-control',
'id': 'ip-address',
}))
device_name = forms.CharField(label="Device Name:",
max_length=50,
widget=forms.TextInput(attrs={
'placeholder': 'Modbus device name',
'class': 'form-control',
'id': 'device-name'
}))
在视图.py在
^{pr2}$html格式
<tbody>
<tr id='addr_0'>
<td>
1
</td>
<td>
{{ registers.starting_address }}
</td>
<td>
{{ registers.ending_address }}
</td>
<td>
{{ registers.register_type }}
</td>
<td>
{{ registers.offset }}
</td>
</tr>
<tr id='addr_1'></tr>
</tbody>
表单集确实是答案。您可以通过Javascript增加extra和total forms属性,因为它们存储为隐藏字段,还可以使用formset的
empty_form
方法输出(例如在隐藏div中)一个空表单,JS可以克隆和更新其字段的name/ID属性。在相关问题 更多 >
编程相关推荐