admin执行流程
<1> 循环加载执行所有已经注册的app中的admin.py文件
def autodiscover():
autodiscover_modules('admin', register_to=site)
<2> 执行代码
#admin.py
class BookAdmin(admin.ModelAdmin):
list_display = ("title",'publishDate', 'price')
admin.site.register(Book, BookAdmin)
admin.site.register(Publish)
<3> admin.site

这里应用的是一个单例模式,对于AdminSite类的一个单例模式,执行的每一个app中的每一个admin.site都是一个对象
<4> 执行register方法
admin.site.register(Book, BookAdmin)
admin.site.register(Publish)
class ModelAdmin(BaseModelAdmin):pass
def register(self, model_or_iterable, admin_class=None, **options):
if not admin_class:
admin_class = ModelAdmin
# Instantiate the admin class to save in the registry
self._registry[model] = admin_class(model, self)
到这里,注册结束!
参考http://www.cnblogs.com/yuanchenqi/articles/8323452.html
具体步骤
1、创建项目
2、在app.py中做如下配置:

3、具体代码
项目知识点
1、反向生成URL
def change_list_url(self):
name = '%s_%s_change_list'%(self.model._meta.app_label,self.model._meta.model_name)
related_url = reverse(name,)
return related_url
def get_change_url(self,nid):
name = '%s_%s_edit'%(self.model._meta.app_label,self.model._meta.model_name)
related_url = reverse(name,args=(nid,))
return related_url
def get_del_url(self,nid):
name = '%s_%s_del'%(self.model._meta.app_label,self.model._meta.model_name)
related_url = reverse(name,args=(nid,))
return related_url
def get_add_url(self):
name = '%s_%s_add'%(self.model._meta.app_label,self.model._meta.model_name)
related_url = reverse(name,)
return related_url
能实现每个App下面不同的表的增删改查。
网友评论