Django(九)admin相关知识
生活随笔
收集整理的這篇文章主要介紹了
Django(九)admin相关知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://www.cnblogs.com/yuanchenqi/articles/6083427.htm
https://www.cnblogs.com/haiyan123/p/8034430.html
Django admin :關于數據庫的一個后臺管理工具
admin是django強大功能之一,它能共從數據庫中讀取數據,呈現在頁面中,進行管理。默認情況下,它的功能已經非常強大,如果你不需要復雜的功能,
它已經夠用,但是有時候,一些特殊的功能還需要定制,比如搜索功能,下面這一系列文章就逐步深入介紹如何定制適合自己的admin應用。
如果你覺得英文界面不好用,可以在setting.py 文件中修改以下選項
LANGUAGE_CODE = 'en-us' #LANGUAGE_CODE = 'zh-hans'
一 認識ModelAdmin
管理界面的定制類,如需擴展特定的model界面需從該類繼承。
二 注冊medel類到admin的兩種方式:
<1> 使用register的方法
admin.site.register(Book,MyAdmin)
<2> 使用register的裝飾器
@admin.register(Book)
三 掌握一些常用的設置技巧
- list_display: 指定要顯示的字段
- search_fields: 指定搜索的字段
- list_filter: 指定列表過濾器
- ordering: 指定排序字段
from django.contrib import admin
from app01.models import *
# Register your models here. # @admin.register(Book)#----->單給某個表加一個定制
class MyAdmin(admin.ModelAdmin):
list_display = ("title","price","publisher")
search_fields = ("title","publisher")
list_filter = ("publisher",)
ordering = ("price",)
fieldsets =[
(None, {'fields': ['title']}),
('price information', {'fields': ['price',"publisher"], 'classes': ['collapse']}),
] admin.site.register(Book,MyAdmin)
admin.site.register(Publish)
admin.site.register(Author)
創建超級管理員
python manage.py createsuperuser
登陸admin
from django.db import models # Create your models here. class Book(models.Model):
name = models.CharField(max_length=32)
price = models.IntegerField()
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author") def __str__(self):
return self.name class Publish(models.Model):
name = models.CharField(max_length=32)
city = models.CharField(max_length=32) def __str__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField() def __str__(self):
return self.name # class Book_Author(models.Model):
# book = models.ForeignKey("Book", on_delete=models.CASCADE)
# author = models.ForeignKey("Author", on_delete=models.CASCADE)
models
admin.py
from django.contrib import admin
from app import models
# Register your models here. admin.site.register(models.Book)
admin.site.register(models.Publish)
admin.site.register(models.Author)
自定義admin樣式
admin.py
from django.contrib import admin
from app import models
# Register your models here. class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date') admin.site.register(models.Book,BookAdmin)
admin.site.register(models.Publish)
admin.site.register(models.Author)
注意:list_display不可以加多對多的關系
此時price,pub_date不可以直接在頁面上edit,需要點擊書名進入修改頁面,若想直接修改,需要再加一個字段
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
增加字段選擇author, filter_horizontal
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')
verbose_name
class Book(models.Model):
name = models.CharField(max_length=32,verbose_name="姓名")
price = models.IntegerField("價格")
pub_date = models.DateField()
publish = models.ForeignKey("Publish",on_delete=models.CASCADE)
authors = models.ManyToManyField("Author")
ording
class BookAdmin(admin.ModelAdmin):
list_display = ('name','price','pub_date')
list_editable = ('price','pub_date')
filter_horizontal = ('authors',)
# list_per_page = 2
search_fields = ('name','id','publish__name')
list_filter = ('pub_date','publish')
ordering = ('-price',) # 加"-"倒序
總結
以上是生活随笔為你收集整理的Django(九)admin相关知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以下属于军人因公致残的有( )。
- 下一篇: 甩棍是违禁物品吗?