Django第六篇-----如何用Django管理后台

目录

使用 Django 管理后台

在后台管理自己的模型

设置字段是否必填

 自定义字段的标注

 自定义修改列表

列及搜做条件

自定义编辑表单

用户、分组和权限


使用 Django 管理后台

运行 django-admin startproject mysite 时,Django 为我们创建并配置了默认的管理后台。我们只需创建一个管理员用户(超级用户),就可以登录管理后台。

点击chenge可加载用户列表

在后台管理自己的模型

在模型文件夹下的admin.py文件添加如下代码

from __future__ import unicode_literals
from django.contrib import admin

from models import *
# Register your models here.

admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

重启服务器即可看到如下界面

这是昨天写的数据

设置字段是否必填

编辑模型代码,如下设置,blank=True即可设置为空,默认情况下,所有字段都是blank=False设置的,就是非空

当你留空字符字段时,Django 插入数据库的是空字符串(而不是 NULL 值)。

但是,对空字符串不是有效值的数据库列类型(如日期、时间和数字)来说,这样处理不行。如果把空字符串插入日期或整数列,数据库有可能报错——这取决于你用的数据库

此时,只能使用 NULL 指定空值。在 Django 模型中,指定接受 NULL 值的方式是为字段设定 null=True 参数。

因此,说起来有点复杂:如果想让日期字段(如 DateField 、 TimeField 、 DateTimeField )或数值字段(如IntegerField 、 DecimalField 、 FloatField )接受空值,要同时添加 null=True 和 blank=True

添加 null=True 比添加 blank=True 复杂,因为前者修改了数据库的语义,即修改了 CREATE TABLE 语句,把publication_date 字段的 NOT NULL 删掉了。为了完成修改,我们要更新数据库。

 python manage.py migrate 

 自定义字段的标注

 email = models.EmailField(blank=True, verbose_name='e-mail')

 自定义修改列表

return u'%s %s' % (self.first_name, self.last_name)

 Author 对象的修改列表中显示各个作者的名字和姓

列及搜做条件

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from books.models import *
# Register your models here.

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'email')
    search_fields = ('first_name', 'last_name')

admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book)

原理如下:

• 定义 AuthorAdmin 类。它是 django.contrib.admin.ModelAdmin 的子类,存放指定模型在管理后台中的自定义配置。我们只做了一项定制, list_display ,把它的值设为一个元组,指定要在修改列表页面显示的字段名称。当然,模型中必须有这些字段。
• 修改 admin.site.register() 调用,在 Author 后面添加 AuthorAdmin 。你可以把这行代码理解为“以 Au-thorAdmin 中的选项注册 Author 模型”。 admin.site.register() 函数的第二个参数可选,其值是一个ModelAdmin 子类。如果不指定第二个参数( Publisher 和 Book 模型就是这样),Django 使用默认选项注册模型。

修改之后,刷新作者的修改列表页面,你会看到现在显示了三列:名字、姓和电子邮件地址。此外,点击这三列的表头都可以排序各列

search_fields = ('first_name', 'last_name')

这是一个简单的搜索框,这个搜索框不区分大小写,而且两个字段都搜索。

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date')
    list_filter = ('publication_date',)
admin.site.register(Book,BookAdmin)

这一次定制的是另一个模型的选项,首先,定义list_display 属性,让修改列表好看一些。然后,为 list_filter 属性赋值一个字段元组,在修改列表页面的右边创建过滤器。Django 为日期字段提供了几个便利的过滤器:“Today”(今天)、“Past 7 days”(过去 7天)、“This month”(本月)和“This year”(本年)——这些是 Django 的开发者觉得过滤日期时最常用的。

添加一个导航栏

date_hierarchy = 'publication_date'

自定义编辑表单

class BookAdmin(admin.ModelAdmin):
    fields = ('title', 'authors', 'publisher', 'publication_date')
    fields = ('title', 'authors', 'publisher')

添加如下设置,可以改变表单的结构

raw_id_fields = ('publisher',)

System check identified no issues (0 silenced).
November 22, 2018 - 19:20:44

用户、分组和权限

• “Active”控制是否激活用户。如果未勾选,即便用户使用有效的密码也无法登录。
• “Staff status”控制是否允许用户登录管理界面(即是否把用户当做组织中的一员)。因为这个用户系统也用于控制面向公众的网站(即前台,参见第 11 章),所以这个旗标对公开用户和管理员是有区别的。
• “Superuser status”为用户赋予所有权限,可以在管理界面中添加、编辑和删除任何对象。如果勾选,用户的常规权限(即使没有)不再考虑。

猜你喜欢

转载自blog.csdn.net/Da___Vinci/article/details/84333677