注意xadmin<=1.9版本django<=1.9功能正常 注意django<1.9旧版本中间件配置是middleware_classxadmin1.11django1.11不能使用小插件1下载与安装
本地zip方法安装(注意,依赖包的下载)2部署
!installedapps中添加'xadmin','crispy_forms'!urls中配置importxadminurlpatterns=[url(r'^xadmin/',xadmin.site.urls),]!同步数据表makekigrationsmigrate-->>生成下面的四张表(失败需要全部清空migrations记录)xadmin_bookmarkxadmin_logxadmin_usersettingsxadmin_userwidget否则会有异常3注册使用
新建adminx.py注册文件 注意:user表默认注册==不需要再注册 外键关联的可以用双下划綫__如'book__name'来显示筛选classCourseAdmin(object):list_display=[,]list_filter=[,]search_fields=[,]list_editable=[,]ordering=['-clicknums']readonly_fields=[,]只读字段exclude=[,]classCourseOrgAdmin(object):#课程的外键关联显示的不是全部的下拉框,而是搜索框relfield_style='fk_ajax'#fk-外键显示样式在wizard中可能会报错
except:#workfordjango<1.8fromdjango.contrib.formtools.wizard.storageimportget_storagefromdjango.contrib.formtools.wizard.formsimportManagementFormfromdjango.contrib.formtools.wizard.viewsimportStepsHelper改为except:passxadmin全局的样式配置
注意:只有一层嵌套classLessonInline(object):model=Lessonextra=0classCourseAdmin(object):list_display=[]search_field=[]...inlines=[LessonInline]5重载显示样式
fromxadmin.layoutimportMain,Fieldset,Row,Sidedefget_form_layout(self):ifself.org_obj:self.form_layout=(Main(Fieldset('','username','password',css_class='unsortno_title'),Fieldset(_('Personalinfo'),Row('first_name','last_name'),#显示在一行'email'),Fieldset(_('Permissions'),'groups','user_permissions'),Fieldset(_('Importantdates'),'last_login','date_joined'), ),Side(Fieldset(_('Status'),'is_active','is_staff','is_superuser',),))returnsuper(UserAdmin,self).get_form_layout()子主题6model的管理器,一个model分不同情况管理
classCourse(models.Model):passclassBannerCourse(Course):#继承父类courseclassMeta:verbose_name='轮播课程'verbose_name_plural=verbose_nameproxy=True#不会生成新的表注册新的表classCourseSourceAdmin(object):list_display=['course','name','add_time','download']list_filter=['course','name','add_time','download']search_fields=['course','name','download']defqueryset(self):qs=super(CourseAdmin,self).queryset()qs=qs.filter(is_banner=False)returnqs7重载save_models方法
后台管理过程中数据的系列改变course新增对象courseorg中的对应数值也相应的变化classCourseAdmin():defsave_models(self):course_obj=self.new_objcourse_obj.save()course_org=course_obj.course_orgifcourse_org:course_org.courses_nums=Course.objects.all().count()course_org.save()8xadmin的refresh插件
11获取当前的user表model
fromdjango.contrib.authimportget_user_model(获取当前的user表model)User=get_user_model()site.register(User,Useradmin)12卸载注册的model
fromdjango.contrib.auth.modelsimportUserxadmin.site.unregister(User)