18、Django-admin管理后台-Meta类
1、先执行数据库迁移 -- python manage.py makemigrations -- python manage.py migrate 2、在cmd终端先创建管理员账户 -- python manage.py createsuperuser 3、登录 -- http://127.0.0.1:8000/admin/
注册自定义的模型类
若要自己定义的模型类也能在/admin后台管理界面中显示和管理、需要将自己的类注册到后台管理界面 注册步骤: -- 1、在应用app中的admin.py中导入注册要管理的模型models类、如: -- from .models import Book -- 2、调用 admin.site.register 方法进行注册,如: -- admin.site.register(自定义模型类-在models.py中的类) 3、此时admin后台就有此模型类了
模型管理器类:
-- 为admin后台界面添加便于操作的新功能 -- 后台管理器类必须继承:django.contrib.admin里的ModelAdmin类 使用方法: 1、在admin.py中添加class模型管理器类 class XXXXManager(admin.ModelAdmin): pass 2、绑定注册模型管理器和模型类 from django.contrib import admin from .models import * admin.site.register(YYYY, XXXXManager) #绑定YYYY模型类与管理器类XXXXManager
案例
models.py
from django.db import models class Book(models.Model): #表名 # 字段 = 数据库字段的属性 title = models.CharField(verbose_name='书名', max_length=100, default='', unique=True) pub = models.CharField(verbose_name='出版社', max_length=100, default='') price = models.DecimalField(verbose_name='价格', max_digits=7, decimal_places=2) market_price = models.DecimalField(verbose_name='市场价', max_digits=7, decimal_places=2, default=0) is_active = models.BooleanField(verbose_name='是否上架', default=True) #伪删除 # Meta类、一定要在模型类中定义 class Meta: db_table = 'book' # 表名 、将系统默认的表名改为 book # 模型类的方法定义、显示输出可视化的属性-如标题、价格等字段显示出来 def __str__(self): return f"{self.title} - {self.price} - {self.pub} - {self.market_price}" class Author(models.Model): name = models.CharField('作者', max_length=100) age = models.IntegerField('年龄', default=1) email = models.EmailField('邮箱', null=True) class Meta: db_table = 'author' # 模型类的方法定义、显示输出可视化的属性-如标题、价格等字段显示出来 def __str__(self): return f"{self.name} - {self.age} - {self.email}"
views.py
views.py ----------------------------------------------------------------------------------- from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render from admin_app.models import * #插入数据到book模型 def index(request): book1 = Book.objects.create(title='python', pub='oreilly', price=100, market_price=200) book2 = Book.objects.create(title='java', pub='oreilly', price=100, market_price=200) book3 = Book.objects.create(title='c++', pub='oreilly', price=100, market_price=200) book4 = Book.objects.create(title='c', pub='清华大学出版社', price=100, market_price=200) book5 = Book.objects.create(title='c#', pub='oreilly', price=100, market_price=200) book6 = Book.objects.create(title='php', pub='oreilly', price=100, market_price=200) book7 = Book.objects.create(title='go', pub='oreilly', price=100, market_price=200) #插入作者数据 author1 = Author.objects.create(name='zhangsan', age=18, email='303977142@qq.com') author2 = Author.objects.create(name='lisi', age=20, email='303977142@qq.com') author3 = Author.objects.create(name='wangwu', age=22, email='303977142@qq.com') author4 = Author.objects.create(name='zhaoliu', age=24, email='303977142@qq.com') author5 = Author.objects.create(name='qianqi', age=26,email='303977142@qq.com') return HttpResponse('插入作者数据成功')
urls.py
urls.py --------------------------------------------------------------- from django.contrib import admin from django.urls import path from admin_app import views urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index, name='index'), ]
admin.py --------------------------------------------------------------------------------------------------- from django.contrib import admin from .models import Book # # 注册 # admin.site.register(Book) class BookManager(admin.ModelAdmin): from django.contrib import admin from .models import Book # # 注册 # admin.site.register(Book) class BookManager(admin.ModelAdmin): #参考链接:https://docs.djangoproject.com/en/2.2/ref/contrib/admin # 列表页显示字段 list_display = ['id', 'title', 'pub', 'price', 'market_price', 'is_active'] # 列表页显示字段的链接、超链接-点击title可以跳到修改页面 list_display_links = ['title'] # 列表页显示字段的过滤器-筛选-类似分类查询 list_filter = ['pub'] # 列表页显示字段的搜索框-模糊查询-输入关键字title进行搜索 search_fields = ['title'] #添加在列表页可编辑的字段-price字段在页面可以直接编辑 list_editable = ['price'] # 列表页显示字段的排序-排序 ordering = ['id'] # 列表页显示字段的分页-分页-每页显示2条信息 list_per_page = 10 # 注册、将模型类绑定模型管理类 admin.site.register(Book, BookManager) # 注册、将模型类绑定模型管理类 admin.site.register(Book, BookManager)
Meta类
# Meta类、一定要在模型类中定义 class Meta: db_table = 'book' # 表名 、将系统默认的表名改为 book # 模型类的名称 -用户显示在admin后台的 # verbose_name = '图书' #一般这个是复数形态 名称后面会有个 s verbose_name_plural = '图书' # 一般这个是单数形态
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18178516
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步