django admin后台管理


admin是django提供的基於web的管理數據庫的工具,它是django.contrib 的一部分,可以在項目的settings.py中的INSTALLED_APPS看到。

一、admin管理工具的使用方法如下:

1.在models.py中創建模型

class Students(models.Model):
    sname=models.CharField(max_length=20)
    age=models.IntegerField()
    gender=models.BooleanField()
    cls=models.ForeignKey('Classes',on_delete=models.CASCADE)
    def __str__(self):
        return '%s,%s,%s,%s'%(self.sname,self.age,self.gender,self.cls)
    class Meta:
        db_table='students'

class Classes(models.Model):
    cname=models.CharField(max_length=50)
    headmaster=models.CharField(max_length=20)
    def __str__(self):
        return '%s,%s'%(self.cname,self.headmaster)
    class Meta:
        db_table='classes'

2.在模型所在app的admin.py中注冊模型

from django.contrib import admin
from app01.models import Students,Classes
admin.site.register(Students)
admin.site.register(Classes)

3.將模型映射到數據庫中

即執行python manage.py makemigrations和migrate命令

4.創建超級用戶

python manage.py createsuperuser,會提示輸入用戶名和密碼等操作,按提示輸入即可

5.運行項目,通過http://127.0.0.1:8000/admin/訪問,並通過上一步創建的用戶名和密碼進行登錄

要使用admin管理工具,需要在項目的urls.py文件的urlpatterns中保留path('admin/', admin.site.urls)部分,登錄后的管理界面如下:

在這個管理界面也可以對模型進行增、刪、改操作。點擊Students進入學生模型界面,顯示如下,默認最后添加的顯示在最上面。

 

 二、自定義admin顯示樣式

以以上Student模型為例。

1.注冊模型時給模型取一個別名

admin.site.register(Students,StudentsAdmin),注意此時這個注冊操作應該放在下一步定義別名模型的后面

2.定義別名模型

class StudentsAdmin(admin.ModelAdmin):
    list_display = ('id','sname','age','gender','cls')  #默認只顯示顯示一列,list_display指定顯示列,存在多對多關系的列不能指定顯示和可編輯
    list_editable = ('sname','age','gender','cls')  #顯示界面可編輯的列
    list_per_page = 5   #每頁顯示行數
    ordering = ('age','-sname')   #排序,默認升序,前面加-則降序
    search_fields = ('sname','age')  #顯示搜索框,在搜索框內可通過指定字段進行搜索
    list_filter = ('age','cls')   #過濾選項
    fieldsets = [(None, {'fields': ['sname','cls']}),
                 ('other information', {'fields': ['gender', 'age'], 'classes': ['collapse']})]  #添加時非必要信息折疊不顯示
    #filter_horizontal = ('cls',)  #僅限多對多列使用,對存在多對多的列可搜索
    #filter_vertical = ('cls',)  #同上

3.配置文件和模型定義

admin管理界面默認為英文顯示,可在settings.py中修改語言LANGUAGE_CODE = 'zh-hans',則在管理界面會顯示中文。

管理界面顯示的表名稱為模型的名稱,如果要修改在admin中顯示的名稱,可在模型定義時的class Meta下增加一行verbose_name_plural = '自定義名稱'。

管理界面顯示的列名稱為模型定義時的屬性名稱,例如學生的名字sname在管理界面同樣顯示為sname,如果在定義時加上verbose_name即別名,sname=models.CharField(max_length=20,verbose_name='學生姓名'),則在管理界面該字段會顯示為學生姓名,如果定義時沒有其他參數也可以直接跟上別名,例如age=models.IntegerField('年齡')。

按照上述操作修改之后的students顯示界面如下。

fieldsets在添加學生時起作用,如下,會將指定的非必須信息折疊起來,當然這些信息要么指定了默認值,要么可以為空,否則不為空還是必須要求給定值。

 

 

假設存在一個班級與老師的多對多關系,filter_horizontal = ('cls',)效果如下,filter_vertical表示選中的框在下面垂直方向上。

 


免責聲明!

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



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