使用Django意味着后台框架的几乎所有内容都会和Django产生互动,排除功能全部手撸的情况。
Django后台管理有大量的属性和方法,拥有强大的功能和自定义能力。通过完整的代码来看Django管理的基础设置和高级用法,并结合形式表单来实现深度自定义。
如果只是使用管理自带的数据管理功能,只需要将模型注册到管理中,就可以实现。
django。contrib进口管理 admin.site.register(新闻) admin.site.register (NewsType) admin.site。site_header="数据库” admin.site。index_title="新闻后台”
Django后台会将对应数据表的所有字段进行展示,默认点击,id会进入修改页面,对应,change_form。html模板。
使用管理员也可以自定义一个管理的类,来自定义后台实现的属性和方法,然后通过,注册()来将自定义的类和模型注册在一起。
注册方式有两种,一种是使用类装饰器,一种是使用,网站
django。contrib进口管理 #装饰器注册 @admin.register (ModelClass) 类CustomAdmin (admin.ModelAdmin): 按照list_display=' __all__ ' #使用的网站 类CustomAdmin (admin.ModelAdmin): 排除=(“id”) admin.site。注册(CustomAdmin ModelClass)
<强> ModelAdmin中的属性设置强>
管理可以设置在列表页和详情页显示的字段以及搜索字段等的限制,在管理的类中可以直接定义。
以使用较多的,ModelAdmin为例,,ModelAdmin源码中的属性有:
#在列表页显示的字段,默认会显示所有字段,有对应的方法可以重写 按照list_display=(__str__,) #在列表页显示的字段中,可以链接到change_form页面的字段 list_display_links=() #右侧的筛选,必须是字段,可以继承自SimpleListFilter来自定义筛选字段和规则,SimpleListFilter的方法在后面详细介绍 list_filter=() #联表查询是否自动查询,可以是布尔,列表或元组,如果是列表或元组,则级联查询指定的字段 list_select_related=False #列表页每页展示的条数 list_per_page=100 #分页,显示全部,真是数据小于该值时才会显示全部 list_max_show_all=200 #在列表页可以编辑的字段 list_editable=() #在列表页可以模糊搜索的字段 search_fields=() #对日期和DateTime类型进行搜索 date_hierarchy=没有 #在change_form页面,按钮为,保存按钮的值(另存为新和保存添加另一个) save_as=False #点击保存并继续编辑 save_as_continue=True #保存按钮的位置,是真正的则显示在页面上方 save_on_top=False #自定义分页类 paginator=paginator #详细页面,删除,修改,更新后跳转回列表后,是否保留原搜索条件管理员现在在创建,编辑或删除对象后保留列表视图中的过滤器。 #可以将此属性设置为False,以恢复之前清除过滤器的行为。 preserve_filters=True #在详情页面,如果有颗到其他表,在详情页中可以动态的填加或删除级联数据 内联=[] 管理中行动操作的设置 管理中的行动是指在列表页的动作,默认为删除所选的条目,可以自定义填加动作,将动作注册到行动中,需要是一个方法 #定制行动中的操作 行动=[] action_form=helpers.ActionForm #行动选项显示的位置,页面上方或者页面下方 actions_on_top=True actions_on_bottom=False #是否显示行动选择的个数 actions_selection_counter=True checks_class=ModelAdminChecks BaseModelAdmin中的属性 除了ModelAdmin中的属性,也可以自定义在其父类BaseModelAdmin中的属性和方法,是一些通用的,在继承子BaseModelAdmin的类中也可以完成的属性设置。一般是详情页的属性。 #自动补全,外键查询数据多时,方便查找 autocomplete_fields=() #详情页,针对外键和M2M字段变成输入框形式 raw_id_fields=() #详情页面展示的字段 字段=没有 #详情页面排除的字段,字段可以是数据库中的也可以是自定义的 排除=没有 #在详情页面对数据进行分隔显示,对应到管理模板中的“fieldsets.html” 自定义字段=没有 #为详情页指定形式表单,可以自定义显示的数据,字段 形式=forms.ModelForm #下面两个是M2M显示时,数据移动选择。可以参考管理中用户的权限操作 filter_vertical=() #纵向展示 filter_horizontal=() #横向展示 #详情页面使用无线电显示选项,颗默认使用选择 radio_fields={} #填加页面,在某字段输入值后,自动填加到指定字段 # prepopulated_fields={“电子邮件”:(“用户”)},邮件字段会在用户填加用户字段时自动填充 prepopulated_fields={} #详情页指定显示的插件,后面详细说明 formfield_overrides={} #详情页面的只读字段 readonly_fields=() #详情页面排序规则 点=没有 #禁止某些排序,为空则禁止所有的排序 sortable_by=没有 #编辑时是否在页面上显示视图> #定制模板(设计成在子类重写) #添加数据模板页 add_form_template=没有 #修改数据的模板页 change_form_template=没有 #修改多条数据的模板页 change_list_template=没有 #删除确认信息模板页 delete_confirmation_template=没有 #删除关联数据的确认页 delete_selected_confirmation_template=没有 #修改历史的模板页 object_history_template=没有 #弹出框模板页 popup_response_template=没有详解Django管理高级用法