最近一個項目用到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