Django基础篇 04-模型类注册到后台Django Admin中
一、django自带的admin的url地址
urls.py文件中
from django.contrib import admin from django.urls import path from user import views urlpatterns = [ path('admin/', admin.site.urls), path('index',views.index), path('',views.get_sign_01), path('category/<int:id>',views.category), path('detail/<int:article_id>',views.detail) ]
二、创建admin用户
python manage.py createsuperuser
也可以使用pycharm 的自带的 run manage.py task
三、登录django后台管理
四、编写models.py类
from django.db import models # Create your models here. # 模型类:是表 # 模型对象:是数据,所以当返回数据对象的时候,需要在models 类中 添加魔法函数__str__ 避免返回的是类的对象 # 模型对象属性:是每个字段 class BaseModel(models.Model): create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') class Meta: abstract = True # 抽象基类 此模型 不需要创建表 class Category(BaseModel): name = models.CharField(max_length=50,verbose_name='分类名称',unique=True,null=False) class Meta: db_table = 'category' # 表名 verbose_name = '文章分类' verbose_name_plural = verbose_name ordering = ['-create_time'] # def __str__(self): return self.name class Article(BaseModel): title = models.CharField(max_length=100,verbose_name='文章标题') content = models.TextField(verbose_name='文章内容') # 长文本内容 read_count = models.IntegerField(default=0,verbose_name='阅读次数') category = models.ForeignKey(Category,on_delete=models.PROTECT,verbose_name='文章分类') # 外键 """ models.DO_NOTHING 删除父表 不影响子表 models.CASCADE 删除父表 同时删除子表 models.SET_DEFAULT 删除父表 子表相关字段设置默认值 models.SET_NULL 删除父表 子表相关字段设置为空 models.PROTECT 受保护的,父表存在子表,则不能删除父表 models.SET 自定义模式,自己指定 """ class Meta: db_table = 'article' # 表名 verbose_name = '文章' # web展示的别名 verbose_name_plural = verbose_name ordering = ['-create_time'] def __str__(self): # 修改类对象的输出内容 默认输出对象属于的类和 此对象的内存地址 return self.title
五、把models的类注册到admin中
admin.py中文件添加注册的models.py的类:
from django.contrib import admin from . import models # Register your models here. class CategoryAdmin01(admin.ModelAdmin): # 模型定制化展示 list_display = ['id','name','create_time','update_time'] list_filter = ['name'] search_fields = ['name'] class ArticleAdmin01(admin.ModelAdmin): list_display = ['id','title','read_count','create_time','update_time'] list_filter = ['title'] search_fields = ['title'] admin.site.register(models.Category,CategoryAdmin01) # 注册模型 并 按照定制化的形式展示 admin.site.register(models.Article) # 注册模型到admin后台 admin.site.site_title = 'SKY' # 修改title admin.site.site_header = 'SKY后台管理' # 修改header
六、在django后台管理页面中可以查看注册模型表