博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django笔记-Admin
阅读量:4054 次
发布时间:2019-05-25

本文共 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.auth

3)MIDDLEWARE_CLASSES打开

django.middleware.common.CommonMiddleware
django.contrib.sessions.middleware.SessionMiddleware
django.contrib.auth.middleware.AuthenticationMiddleware

4)安装admin数据库

如果以上几点是新添加的,那么需要添加amdin管理用数据库。
python manage.py syncdb

5)createsuperuser

如果在安装数据库时没有创建superuser,则可以用以下命令创建
python manage.py createsuperuser

3.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 models

admin.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
yogngao

2)显然这个样子是很难看的,我们可以完全定制显示形式包括5中提到的修改label名。

修改后的例子:
#admin.py
from django.contrib import admin
from mysite.books.models import Publisher, Author, Book

class 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/

你可能感兴趣的文章
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>