一、在admin中显示多字段
1 from django.contrib import admin 2 from app01 import models 3 4 class BookConfig(admin.ModelAdmin): 5 list_display = ["title","price"] #可以添加一对一或一对多字段,不能添加多对多字段 6 7 admin.site.register(Booke,BookConfig)
点击字段进入编辑界面
list_display_links = ["title","price"]
二、admin流程
1、启动
1 autodiscover_modules('admin', register_to=site)
2、注册
1 class AdminSite(object): 2 def __init__(self, name='admin'): 3 self._registry = {} 4 5 def register(self, model, admin_class=None, **options): 6 if not admin_class: 7 admin_class = ModelAdmin 8 9 self._registry[model] = admin_class(model, self) # {Book:ModelAdmin(Book)} 10 11 12 admin.site.register(Book) # admin.site._registry={Book:ModelAdmin(Book)} 13 admin.site.register(Publish) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish)} 14 15 class Authoconfig(admin.ModelAdmin): 16 pass 17 18 admin.site.register(Author,Authoconfig) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish),Author:Authoconfig(Author)}
3、设计url
什么是url?
四部分:协议、IP和端口、路径、参数
协议://IP:端口/路径/?参数
路由系统只匹配路径部分
1 def get_urls_2(): 2 3 temp=[] 4 5 temp.append(url(r"^$",list_view)) 6 temp.append(url(r"^add/$",add_view)) 7 temp.append(url(r"^(\d+)/change/$",change_view)) 8 temp.append(url(r"^(\d+)/delete/$",delete_view)) 9 10 11 return temp 12 13 14 def get_urls(): 15 print(admin.site._registry) # {Book:modelAdmin(Book),.......} 16 17 18 temp=[] 19 for model,admin_class_obj in admin.site._registry.items(): 20 app_name=model._meta.app_label 21 model_name=model._meta.model_name 22 23 temp.append(url(r'^{0}/{1}/'.format(app_name,model_name), (get_urls_2(),None,None)),) 24 25 return temp 26 27 28 urlpatterns = [ 29 30 url(r'^admin/', admin.site.urls), 31 32 url(r'^Xadmin/', (get_urls(),None,None)), 33 34 ]