本文共 2795 字,大约阅读时间需要 9 分钟。
1.Using the Admin site
admin模块在django.contrib中,所以添加admin管理时需要在ulrs中去掉以下两行注释; from django.contrib import admin admin.autodiscover()2.setting设置
1)在INSTALLED_APPS中添加django.contrib.admin 小技巧:INTALLED_APPS最好以alphabetical排列,这样比较容易阅读。2)确保以下三个app被安装
django.contrib.sessions django.contrib.contenttypes django.contrib.auth3)MIDDLEWARE_CLASSES打开
django.middleware.common.CommonMiddleware django.contrib.sessions.middleware.SessionMiddleware django.contrib.auth.middleware.AuthenticationMiddleware4)安装admin数据库
如果以上几点是新添加的,那么需要添加amdin管理用数据库。 python manage.py syncdb5)createsuperuser
如果在安装数据库时没有创建superuser,则可以用以下命令创建 python manage.py createsuperuser3.Adding your models to the Admin site
在books app目录下创建admin.py文件,注意这个文件名只能叫admin.py不能是别的。 因为在django家在urls.py时会执行admin.autodiscover()函数,该函数从INSTALLED_APPS 中查找app,并在对应的app下查找amdin.py文件名。执行admin.py的内容。 e.g. from django.contrib import admin from website.books import modelsadmin.site.register(models.Publisher)
admin.site.register(models.Author) admin.site.register(models.Book)4.修改admin可编辑属性
admin会根据在创建数据库时的非空与否属性来确定字段是否必填。
默认的字段都是必须填的,如果可以为空可以自己添加属性。e.g. class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email = models.EmailField(blank=True) 注意:对于时间和数字,允许为空的条件需要blank=True,null=True,否则会引发错误。 models.DateField(blank=True, null=True) 这里blank=True没有改变数据库属性,但是null=True却改变了数据库的属性,所以 在添加null=True后需要更改数据库,这个在上一节已经描述过了,需要用数据库命令来修改。5.Customizing field labels
默认情况下,数据库的field名字在admin中显示的是数据库定义时的名字,例如上面例子中first_name 显示的就是first_name,这个可以修改在数据库中显示的名字(label),例如: class Author(models.Model): first_name = models.CharField(max_length=30,verbose_name="姓名") last_name = models.CharField(max_length=40) email = models.EmailField(blank=True) def __unicode__(self): return self.last_name 6.Customizing ModelAdmin class 1)默认情况下amdin中显示某个表中的内容是__unicode__函数中定义的内容。例如上面的例子 Author表中在admin中只会显示last_name列内容。 类似下面的表示: Author #表名 xiuqi #作者的last_name yogngao2)显然这个样子是很难看的,我们可以完全定制显示形式包括5中提到的修改label名。
修改后的例子: #admin.py from django.contrib import admin from mysite.books.models import Publisher, Author, Bookclass AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin) admin.site.register(Book) #models.py class Author(models.Model): first_name = models.CharField(max_length=30,verbose_name="姓名") last_name = models.CharField(max_length=40) email = models.EmailField(blank=True) 这样修改后的表示形式为: 姓名 last_name email zhang san sun yonggao 3)其他定制项目 search_fields = ('first_name', 'last_name') list_filter = ('first_name',) date_hierarchy = ('first_name') ordering = ('-first_name',) fields = ('last_name', 'first_name', 'email', )#定制列的先后顺序 #利用fields属性同样可以起到控制可编辑域作用,即不想被编辑的域直接就 #可以不列出来。7.控制用户 组 权限
这个直接配置即可。<本节完>
转载地址:http://izxci.baihongyu.com/