详解Django管理高级用法

  

使用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管理高级用法