创建模型
在应用中的model模块中定义模组,类似于创建数据库中的表结构,其中的数据类型众多,下面举个栗子:
Grades、Students是分别定义的模型,对应的就是数据库中的表
- models.CharField() 字符串类型
- max_lengeh 最大长度,不可省略
- models.IntegerField() int类型
- models.BooleanField() bool类型
- default 默认值
- models.TextField() 文本型
- models.CharField() 字符串类型
数据迁移
- 在django中,如果开发项目数据表比较多,如果使用数据库手动的创建比较费时费力,可以直接使用django中的命令,在数据库中创建定义好的模型。如下,打开命令行,切到项目文件中,使用以下命令创建迁移文件,由于我的迁移文件已经存在,所以返回如下提示。
- 迁移文件,migrations文件夹便是使用cmd创建的文件
- 其中0001_initial.py中包含一些代码,如下,便是我创建的两个模组,到这一步仅仅是创建了模型,此时数据库中并没有创建表
- 使用如下命令即可完成数据迁移,在数据库中就可以看到创建的数据表了
配置语言和时区
- 如果不配置语言和时区则网站显示的是英文和国外时间
启动服务
- runserver启动的是轻量级web服务器,用于测试
- 使用浏览器打开连接http://127.0.0.1:8000/admin/
注册模型
- 想要通过浏览器对后台数据进行可视化管理,需要将应用中对应的模型进行注册
- 刷新浏览器
- 点击进入Grades,发现数据不知道是什么
自定义管理页面
from django.contrib import admin
from .models import Grades,Students
# 关联对象,在创建一个班级时可以直接添加几个学生,还可继承admin.StackInline
class StudentsInfo(admin.TabularInline):
# 关联的模型
model = Students
# 添加的条数
extra = 2
# 使用装饰器进行注册
@admin.register(Grades)
class GradesAdmin(admin.ModelAdmin): # 继承于admin.ModelAdmin
# 自定义管理页面
# 将关联对象添加
inlines = [StudentsInfo]
# 显示的字段
list_display = ['grade', 'date_of_reg', 'students_num', 'master', 'is_delete']
# 过滤器字段
list_filter = ['grade', 'master']
# 每一页的数据条数
list_per_page = 5
# 搜索字段
search_fields = ['grade', 'date_of_reg', 'students_num', 'master', 'is_delete']
# 显示字段先后顺序, fieldsets和feilds只能使用一个
# fields = ['grade', 'students_num', 'master', 'date_of_reg', 'is_delete']
fieldsets = [
('name', {'fields': ['grade', 'master']}),
('num', {'fields': ['students_num', 'date_of_reg', 'is_delete']})
]
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
# 性别布尔值True显示男
def show_gender(self):
if Students.gender:
return "男"
else:
return "女"
list_display = ['s_name', 'student_id', show_gender, 'phone', 'introduce', 'grade']
# 按钮位置
actions_on_top = False
actions_on_bottom = True