初学Django:第十三天,admin

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管理网页账号和密码


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值