一、本节目标
前几节,我们实现了数据展示,数据增删改查,本节我们完善一下,对于一些只读字段,只让它显示到前端,不让人对其进行修改。
二、功能分析
1、admin的实现方式是,在自定义admin里添加readonly_fields字段,然后在admin里修改的时候,对应的字段就只是显示在前端,不会被修改。
admin上显示如图所示,只有显示,没有修改功能:
三、功能开发
1、在baseadmin里添加readonly_fields:
2、在自定义admin里添加对应的字段
3、由于修改表单,是通过动态生成显示在前端页面的,因此,修改还得从那里修改。
在动态生成form里,排除只读字段,再通过前端把只读字段显示在前端即可。这样修改from的时候不会验证只读字段。
4、同时,将只读字段在前端获取并显示在前端
获取对应字段的值,这里使用反射getattr这个功能,因此还得需要在tag里生成,然后返回给前端:
前端引入此tag,修改页面添加:
5、此时修改功能,只读字段显示正常:
目前对于下拉框,只显示了序号,没有显示值,这个先记录以后再解决。
6、此时添加功能会报错,因为只读字段status没有值
因此,需要做个判断,如果是添加表单,就不要只读字段,如果是修改表单,就带着只读字段:
add视图添加一个字段form_add = True
此时添加和修改功能均正常可用。