python+Django CRM客户关系管理系统开发(九)--只读字段处理

一、本节目标

前几节,我们实现了数据展示,数据增删改查,本节我们完善一下,对于一些只读字段,只让它显示到前端,不让人对其进行修改。

二、功能分析

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

此时添加和修改功能均正常可用。

原文地址:https://www.cnblogs.com/realizetomoney/p/13909590.html