關於django xadmin的學習改造(菜單名稱,更改默認前綴數據庫)


 

路徑xadmin-master\demo_app\app\models.py

 1 class c(models.Model):
 2     ip_address = models.CharField(max_length=16)
 3 
 4     #host = models.ForeignKey(Host)  注意此行,添加的是外鍵查詢
 5 
 6     name = models.CharField(max_length=16)
 7     testlist = models.CharField(max_length=16)
 8     
 9     def __unicode__(self):
10         return '%s c [%s] %s %s' % (self.ip_address.name, self.id,
11                                                self.testlist, self.name)
12     class Meta:
13          #app_label = u'waf日志'      #更改數據表表名
14          db_table = 'testc' #更改django默認前綴數據庫命名規則,詳情代碼外
15          verbose_name = u"Awaf Log" #app菜單名字,如果沒有則為 name+s,加u是中文
16          verbose_name_plural = verbose_name
關於models.py的相關

'''

db_table

django默認的數據庫命名是加上創建appname_xxx

此功能可以突破,

比如說我的app名字是xadmin,數據庫名字c,則默認的就是xadmin_c,數據庫名字為xadmin.c,

使用     db_table = 'testc'   則xadmin.c數據庫變為testc

操作完后創建在models中新建的規則的表(如果你是自己在mysql新建或者從其他地方導入mysql里的表,非app前綴的表,想使用這些表,繼續往下看我的low思路,大牛留情)

python manage.py makemigrations

python manage.py migrate

會在字符命令行中發現 以創建 c 表,注意不是testc

 

之后在xadmin-master\demo_app\app\adminx.py

 

from models import IDC, Host, MaintainLog, HostGroup, AccessRecord, c #注意是c

 1 class MaintainLogAdmin1(object):
 2     list_display = (
 3         'ip_address', 'name', 'testlist')
 4     list_display_links = ('ip_address',)
 5 
 6     list_filter = ['ip_address', 'name', 'testlist']
 7     search_fields = ['ip_address']
 8 
 9     form_layout = (
10         Col("col2",
11             Fieldset('ip_address',
12                     'name', 'testlist',
13                      css_class='unsort short_label no_title'
14                      ),
15             span=9, horizontal=True
16             ),
17         Col("col1",
18             Fieldset('ip_address',
19                      'name', 'testlist'
20                      ),
21             span=3
22             )
23     )
24     reversion_enable = True
25 xadmin.sites.site.register(c,MaintainLogAdmin1) #看這里,注意導入的是c,也就是上文提到的,在命令行看見創建成功記錄的表名
adminx.py 關於應用模板

不出意外,刷新頁面成功了,有問題,咱討論討論,我是菜鳥,這里主要就是關於models.py里的模板類里的 class Meta:中db_table的使用,感興趣的去千百度這個類

 

如果你的數據庫表是從外部導入的非app前綴的,有幾種思路,最low的就是替換法,return到最上面,創建一個和你從外部導入的表一樣名字的表,然后在mysql圖形界面客戶端更改替換,注意在models里的規則要一直,復制粘貼的時候要注意是否有外鍵,羅嗦完畢

還有比較高級的思路,就是用數據庫的觸發器更新,當一個表更新的時候,自動同步到另一個表,知乎上有,么么噠

'''

關於修改xadmin 首頁 標題 和 首頁 頁腳 標題 網上也有,還有修改xadmin菜單圖標

在xadmin-master\demo_app\app\adminx.py

class GlobalSetting(object):
    site_title = 'Awaf L0g System' #修改首頁標題
    site_footer = 'Awaf_Team'#修改首頁頁腳標題
    #global_search_models = [Host, IDC]
    global_models_icon = { 
        Host: 'fa fa-laptop', c: 'fa fa-cloud',   #修改菜單圖標 大概格式就是fa fa-xxx,這里我把idc的圖標改成了c的圖標
    }
    menu_style = 'default'#'accordion' 
xadmin.sites.site.register(views.CommAdminView, GlobalSetting)

 ----------更新

在用

python manage.py makemigrations

python manage.py migrate

更改數據庫表名的時候,如果出現太亂的話,由於之前創建刪除多個模塊,導致太亂,

到xadmin-master\demo_app\app\migrations 刪除多余再更新創建

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM