现实需求中,会有在编辑的时候有部分字段是只读的,不能修改的,这个功能如何实现?
1,首先是在基类中,增加一个只读字段的配置,
class BaseAdmin(object): list_display = [] list_filters = [] search_fields = [] list_per_page = 20 ordering = None filter_horizontal = [] readonly_fields = [] ----只读字段
2,在编辑页面,在展示字段的时候判断字段是否在这个只读字段里面里面,
如果在的话就给这个字段做处理
处理逻辑:
2.1 在实现的时候有disabled的属性来控制,但是会有问题,这样提交数据的时候form表单不提交这个字段的数据了
怎么办:
2.1.1 使用js在提交时候把disabled去掉?
function SelectAllChosenData() { $("select[tag=‘chosen_list‘] option").each(function () { $(this).prop("selected",true); }) //remove all disabled attrs $("form").find("[disabled]").removeAttr("disabled") ; return true; }
2.1.2 改成p标签?不行,p标签不会在form表单中提交,
2.1.3 直接从数据库中取这个值?
2.2 不能使用只读属性:因为这个下拉框还能下拉下来,并且还能修改选中的值,这是不行的
<input type="text" name="country" value="China" readonly="readonly" />
3,前端验证完了后端也要验证,否则前端改了后端不校验还是没有用,
11-crm项目-kingadmin,只读字段的配置和后端校验
原文:https://www.cnblogs.com/andy0816/p/13687364.html