1.把模型类中数据以页面的方式显示到网站中
E:\Python 3.7.9\Django-object\dj11\books\admin.py
from books.models import PeopleInfo
from django.contrib import admin
from books.models import BookInfo,PeopleInfo
# Register your models here.
"""
1.admin 可以把模型类中数据以页面的方式显示到网站中
"""
# 1注册模型类
# 设置网站的页头
admin.site.site_header= '图书管理'
# 设置页面标题
admin.site.site_title = '图书管理系统'
# 设置首页标语
admin.site.index_title = '欢迎使用图书管理系统'
# admin.ModelAdmin
# 自定义模型管理类
"""
1.继承admin中 admin.ModelAdmin(自定义的时候继承的模型管理类)
2.添加到注册方法中
"""
class BookInfoAmin(admin.ModelAdmin):
#
list_per_page = 2
actions_on_bottom = True
list_display = ['name','pub_date','readcount','commentcount','sum_count','is_delete']
# 在修改中显示数据
# fields = ['name','pub_date']
# 以分组的方式显示
fieldsets = (
('基本',{'fields':['name','pub_date']}),
('高级',{'fields':['readcount','commentcount'],
'classes':('collapse',)
}), # 是否折叠显示
)
class PeopleInfoAmin(admin.ModelAdmin):
list_per_page = 20
list_display = ['name','gender','description','book','read','is_delete']
list_filter = ['book','name']
# 搜索框
search_fields = ['name']
# 添加到注册方法中
admin.site.register(BookInfo,BookInfoAmin)
admin.site.register(PeopleInfo,PeopleInfoAmin)
E:\Python 3.7.9\Django-object\dj11\books\models.py
from django.db import models # 这个就是模型的模块
# 模型类 和数据库相关的
# Create your models here.
""""
class ORM 对象-关系 映射
1.模型类 class 对应着我们的数据库中的(mysql)表名
2. 属性 对应着我们的数据库中的字段 类型
3.对象 对应着数据中的这个表名字
"""
# 图书类
class BookInfo(models.Model):
# 定义属性
# 属性名 = 属性类型(选项)
# id 这个字段是不需要自己去定义的
# 书名
name = models.CharField(max_length=10)
# 发布日期 verbose_name 属性名 null 是否允许为空的
pub_date = models.DateField(verbose_name='发布日期',null=True)
# 阅读量 default 一个默认值
readcount = models.IntegerField(default=0,verbose_name='阅读量')
# 评论量
commentcount = models.IntegerField(default=0,verbose_name='评论量')
# 逻辑删除
is_delete = models.BooleanField(default=False,verbose_name='逻辑删除')
def __str__(self):
return self.name
# Meta 这个是我们继承自模型 要注意不要写错误类名
# 这这个类可以给我们提供指定数据库中的表名,admin 中显示这个类名 已复数的形式显示
class Meta:
db_table = 'bookinfo' # 这个是指定表名的
verbose_name = '图书' # 在admin中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称
def sum_count(self):
# 总量 = 阅读量和评论量
return self.readcount + self.commentcount
sum_count.short_description = '总量' # 设置方法字段在admin中显示的标题
# 人物表
# 把人物和图书关联起来
class PeopleInfo(models.Model):
#
CHOICES_CHOICES = (
(0, 'male'),
(1, 'female')
)
name = models.CharField(verbose_name='名称',max_length=20)
# 性别
gender = models.SmallIntegerField(choices=CHOICES_CHOICES,default=0,verbose_name='性别')
# 描述信息
description = models.CharField(max_length=200,null=True,verbose_name='描述信息')
# on_delete 关联中的删除数据表的时候不至于删除掉这个表中的数据
# models.CASCADE
book = models.ForeignKey('BookInfo',on_delete=models.CASCADE,verbose_name='图书')
# 逻辑删除
is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
def __str__(self):
return self.name
class Meta:
db_table = 'peopleinfo' #表名
verbose_name = '人物信息'
verbose_name_plural = verbose_name
def read(self):
return self.book.readcount
read.short_description = '图书阅读量' # 设置方法字段在admin中显示
2.通过命令:python manage.py createsuperuser 创建admin管理网页账号和密码