Admin站点管理

Admin站点管理

一、配置admin应用

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
]

二、创建管理员用户

命令:

python3 manage.py createsuperuser

一次输入 用户名 邮箱 密码

三、汉化 (配置中国时区)

settings.py

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

四、models 模型

from django.db import models

# Create your models here.
# Create your models here.
# 用户表
class User(models.Model):
    username = models.CharField(max_length=20,db_index=True,default='lucky',verbose_name='用户名')
    sex = models.BooleanField(default=True,verbose_name='性别')
    age = models.IntegerField(default=18,verbose_name='年龄')
    info = models.CharField(max_length=20,default='我是帅气的lucky老师',verbose_name='简介')
    createtime = models.DateTimeField(auto_now_add=True,verbose_name='加入时间')
    def __str__(self):
        return self.username
    class Meta:
        db_table = 'user'


# 创建博客模型
class Posts(models.Model):
    title = models.CharField(max_length=20,default='标题',verbose_name='标题')
    article = models.CharField(max_length=200,default='博客内容',verbose_name='博客内容')
    createTime = models.DateTimeField(auto_now_add=True,verbose_name='发表时间')
    users = models.ForeignKey(User,verbose_name='用户')
    def __str__(self):
        return self.title

    class Meta:
        db_table = 'posts'

五、修改admin.py文件 配置后台显示页面

from django.contrib import admin
from .models import User,Posts  # 导入当前User模型
# 注册模型
admin.site.register(User)
admin.site.register(Posts)

六、配置后台用户和博客模型类的页面的显示

user模型的配置

# 配置后台页面显示
# 使用注册器完成注册
class UserAdmin(admin.ModelAdmin):
    # 性别显示成男女
    def my_sex(self):
        if self.sex:
            return '男'
        else:
            return '女'

    my_sex.short_description = '性别'
    #    显示字段
    list_display = ['pk', 'username', my_sex, 'age', 'info', 'createtime']
    # 过滤字段
    list_filter = ['username']
    #     搜索字段
    search_fields = ['username']
    # 分页
    list_per_page = 5
    #  添加修改数据的时候 调整属性顺序
    # fields = ['username','info','age']
    # 添加修改时候 进行分组显示 不能跟上一个fields一同出现
    fieldsets = [
        ('第一组', {'fields': ['username', 'info']}),
        ('第二组', {'fields': ['age', 'sex']})
    ]
    # 更改动作框上下的位置
    actions_on_top = True
    actions_on_bottom = False
admin.site.register(User,UserAdmin)

posts模型的配置

class PostsAdmin(admin.ModelAdmin):
    #    显示字段
    list_display = ['title','article','createTime','users']
    # 过滤字段
    list_filter = ['title']
    # 分页
    list_per_page = 3
    #   搜索字段
    search_fields = ['title']
admin.site.register(Posts,PostsAdmin)

七、关联对象

需求:

在创建用户的时候 喜欢不添加几篇博客

# class PostsInfo(admin.TabularInline):  # 横着显示添加博客的界面
class PostsInfo(admin.StackedInline):  # 竖着显示添加博客的界面
    model = Posts
    extra = 2  # 创建用户的时候 添加俩个博客


# Register your models here.
# 配置后台页面显示
# 使用注册器完成注册
class UserAdmin(admin.ModelAdmin):
    inlines = [PostsInfo]
    ...

八、使用装饰器完成注册

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    ...

@admin.register(Posts)
class PostsAdmin(admin.ModelAdmin):
    ...

# 注册模型
# admin.site.register(User, UserAdmin)
# admin.site.register(Posts)

九、完整的代码

from django.contrib import admin
from .models import User,Posts  # 导入当前User模型



# class PostsInfo(admin.TabularInline):  # 横着显示添加博客的界面
class PostsInfo(admin.StackedInline):  # 竖着显示添加博客的界面
    model = Posts
    extra = 2  # 创建用户的时候 添加俩个博客


# Register your models here.
# 配置后台页面显示
# 使用注册器完成注册
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    inlines = [PostsInfo]
    # 性别显示成男女
    def my_sex(self):
        if self.sex:
            return '男'
        else:
            return '女'

    my_sex.short_description = '性别'
    #    显示字段
    list_display = ['pk', 'username', my_sex, 'age', 'info', 'createtime']
    # 过滤字段
    list_filter = ['username']
    #     搜索字段
    search_fields = ['username']
    # 分页
    list_per_page = 5
    #  添加修改数据的时候 调整属性顺序
    # fields = ['username','info','age']
    # 添加修改时候 进行分组显示 不能跟上一个fields一同出现
    fieldsets = [
        ('第一组', {'fields': ['username', 'info']}),
        ('第二组', {'fields': ['age', 'sex']})
    ]
    # 更改动作框上下的位置
    actions_on_top = True
    actions_on_bottom = False



@admin.register(Posts)
class PostsAdmin(admin.ModelAdmin):
    #    显示字段
    list_display = ['title','article','createTime','users']
    # 过滤字段
    list_filter = ['title']
    # 分页
    list_per_page = 3
    #   搜索字段
    search_fields = ['title']



# 注册模型
# admin.site.register(User, UserAdmin)
# admin.site.register(Posts)
发布了58 篇原创文章 · 获赞 0 · 访问量 513

猜你喜欢

转载自blog.csdn.net/qq_41170489/article/details/103436946