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后台管理页面中可以查看注册模型表

 

 

 

posted @ 2021-12-26 20:57  捞铁  Views(634)  Comments(0Edit  收藏  举报