[英]ModelForm field not showing
我知道這很簡單,但是我已經在這里待了更長的時間,並且在這里找不到我做錯了什么。
我有一個要包含主鍵和名稱的模型表單:
class ModbusDevice(models.Model):
ixModbusDevice = models.AutoField(primary_key=True)
sModbusName = models.CharField(verbose_name='Device Name',max_length=100)
class BACnetModbusDeviceForm(ModelForm):
class Meta:
model = ModbusDevice
fields = ['ixModbusDevice', 'sModbusName']
widgets = {
'ixModbusDevice' : TextInput(),
'sModbusName' : TextInput(attrs={'class': 'form-control', 'readonly': True}),
}
那么在我看來,我有:(BACnetModbusContainer是一個自定義類)
class BACnetModbusContainer:
modbus_devices = None
bacnet_devices = None
方法:
modbus_devices = ModbusDevice.objects.all()
devices = []
for idx,device in enumerate(modbus_devices):
container = BACnetModbusContainer()
container.bacnet_devices = BACnetDeviceForm(prefix="bacnet_" + str(idx))
container.modbus_devices = BACnetModbusDeviceForm(instance=device, prefix="modbus_" + str(idx))
devices.append(container)
return render(
request,
'app/create_bacnet.html',
context_instance = RequestContext(request,
{
'title':'Create BACnet Device',
'tag': 'create_bacnet',
'devices': devices
})
)
然后在我的模板中:
{% for device in devices %}
<tr>
<td>
{{ device.modbus_devices.sModbusName }}
{{ device.modbus_devices.ixModbusDevice }}
</td>
</tr>
{% endfor %}
為什么我的ixModbusDevice
不顯示?
因為它是一個自動字段。 您不能設置這些; 它們是由數據庫自動分配的,因此是名稱。 因此,沒有必要在表單上顯示。
嘗試將return
更改為:
return render(
request,
'app/create_bacnet.html',
{
'title':'Create BACnetDevice',
'tag':'create_bacnet',
'devices': devices
}
)
render()與帶有context_instance參數的render_to_response()調用相同,該參數強制使用RequestContext。
設法跳過渲染。 迭代所有設備時,我可以通過“初始”屬性訪問主鍵:
{{ device.modbus_devices.initial.ixModbusDevice }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.