最近一个项目用到django的xadmin改造来做,这方面资料偏少,现在吧目前自己学到的东西分享一下,一遍大家用到时候查阅。
1, classComm(Settings): 中可以实现
菜单中添加模块和二级菜单 def get_nav_menu(self): menus = super(Comm, self).get_nav_menu() menus.append({ 'menus': [{ 'url': '/admin/report', 'icon': 'search', 'perm': 'main.view_record', 'title': '查看班报' }], 'first_icon': 'calendar', 'title': u'班报查询' }) return menus 菜单中插入二级菜单 defget_nav_menu(self): model_dict1 = { 'url': '/cluster/index', 'icon': 'search', 'perm': 'main.view_record', 'title': '概况', } menus = super(Comm, self).get_nav_menu() menus[2]['menus'].insert(0, model_dict1) return menus 设置主题可选择 enable_themes= True use_bootswatch = True 设置系统标题 site_title='**管系统' 设置菜单风格 menu_style = 'accordion' 设置各模块的菜单标题,ps:这个也可以到个模块下面的__init__.py中添加app_title= _('用户管理') apps_label_title = { 'auth':u'权限管理', ‘user’:u’用户管理’ }
2,admin查询实现
class PCAdmin(object): def open_detail(self,instance): return "<a href='http://***/%s' target='_blank'>详情</a>" % instance.Host #查询过滤 def get_list_queryset(self): return super(PCAdmin, self).get_list_queryset().filter(HomeId__in=[1,2]) open_detail.short_description = u'PC详情' open_detail.allow_tags = True open_detail.is_column = True #列表显示字段, list_display = ('Host','Type','Model', 'Cpu', 'Mem', 'Manager','open_detail') #open_detail添加的自定义冗余列,用于调用上面函数。 show_detail_fields = ('Host')#在此字段处预览 list_filter = ('ClusterId','Manager', 'Host')#filter过滤器过滤字段 model_icon = 'laptop' #菜单处显示的icon hidden_menu=True#设置不显示此模块菜单
3,model注册
TYPE = ( (1, 'PC '), (2, '服务器') ) class PCStatus(models.Model): Host =models.GenericIPAddressField('ip',max_length=20) #字典类型 Type =models.IntegerField('类型',choices=TYPE,blank=True,null=True) #外键关联 HomeId=models.ForeignKey(HomeDict,verbose_name=’ 所属机房 ',db_column='HomeId',blank=True,null=True) Load = models.IntegerField('机器负载',blank=True,null=True) CheckTime = models.DateTimeField('监测时间',blank=True,null=True) class Meta: verbose_name = u"机器分析" verbose_name_plural = verbose_name def __unicode__(self): return "%s 机器" % self.Host