python_django_admin

admin 是Django提供的基于web的管理工具,是系统管理员用于数据的输入,删除和查询的管理工具。

超级管理员在settings中的集成:INSTALLED_APPS=['django.contrib.admin']

1.创建超级用户python manage.py createsuperuser

 2.浏览器登录用户

3.添加自己的数据模型

from django.db import models


class Grade(models.Model):
    gradeid = models.CharField(max_length=20)
    g_name = models.CharField(max_length=15)

    def __str__(self):     # 在Django管理中userModel object显示为姓名
        return self.g_name

class Student(models.Model):
    s_name = models.CharField(max_length=20)
    s_age = models.IntegerField()
    s_sex = models.BooleanField(default=True)   # 默认为男
    s_gradeid = models.ForeignKey(Grade, on_delete=models.CASCADE)
    def __str__(self):
        return self.s_name
对应models.py

在admin中注册需要管理的数据库表:

from myapp.models import Student, Grade

admin.site.register([Student, Grade])   

效果:

 

 设置界面为中文:(在settings.py中修改配置如下)

# LANGUAGE_CODE = 'en-us'
# 
# TIME_ZONE = 'UTC'

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/shanghai'

USE_I18N = True

USE_L10N = True

# USE_TZ = True
USE_TZ = False   # 关闭时区

4.添加自己的管理类(在admin.py中定义类):

from django.contrib import admin

from myapp.models import Student, Grade

# 添加自己的管理类
class StudentAdmin(admin.ModelAdmin):
    def sex(self):     # 对性别的true/false进行处理
        if self.s_sex:
            return ''
        else:
            return ''
    sex.short_description = '性别'    # 设置显示标题
    list_display = 's_name', sex    # 在student页显示表,s_name/s_gradeid分别为models中的字段
    search_fields = 's_name', 's_age'    # 可搜索的字段名
    list_filter = 's_name', 's_age'     # 过滤字段
    list_per_page = 2     # 分页,每页显示多少条数据
    fieldsets = (
        ('基本信息', {'fields': ('s_name', 's_age')}),     # fields :显示的字段
        ('可选信息', {'fields': ('s_gradeid', 's_sex')})   # exclude:不显示的字段
    )


admin.site.register(Student, StudentAdmin)    # 注册

效果1:student的显示

 

 效果2:显示方式

 5.admin中的级联

from django.contrib import admin

from myapp.models import Student, Grade

class StudentInfo(admin.TabularInline):
    extra = 3  # 创建的基础条数
    model = Student  # 连接的表

class GradeAdmin(admin.ModelAdmin):
    inlines = [StudentInfo]

admin.site.register(Grade, GradeAdmin)

效果:

 

 6.修改Django管理的HTML页面

posted @ 2019-12-16 11:22  yin_zhaozhao  阅读(173)  评论(0编辑  收藏  举报