Django形式的动态表

2024-09-30 01:24:22 发布

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

所以我看了文件,看了几个答案,但我想我自己在这里搞糊涂了。在

我试图构建一个可以动态添加行的表。我的表行是从我的名为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>

Tags: formidvalueaddressformstextinputwidgetattrs

热门问题