Django从Models 10分钟定制一个Admin后台

news/2024/11/19 23:40:47/

简介

Django自带一个Admin后台, 支持用户创建,权限配置和所有模型的增删改查功能, 只需要一些简单的配置就可快速得到一个开箱可用的后台管理系统

操作步骤

1. 更改设置,使用中文/亚洲时区

修改项目下django_shop目录下的settings.py文件
修改以下三行

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_L10N = False

添加以下两行, 已更改时间显示格式

DATETIME_FORMAT = 'Y年m月d日 H:i:s'
DATE_FORMAT = 'Y年m月d日'

2. 为Models提供中文显示名称和实例名称

修改项目shop目录下的models.py, 为每个模型添加meta信息和__str__方法

from django.db import modelsclass Category(models.Model):...class Meta:verbose_name_plural = verbose_name = "分类"    # 该模型在后台显示的名称def __str__(self):   # 该模型每一个实例显示其namereturn self.nameclass Product(models.Model):...class Meta:verbose_name_plural = verbose_name = "商品"def __str__(self):return self.nameclass Order(models.Model):...class Meta:verbose_name_plural = verbose_name = "订单"def __str__(self):return "{}的订单".format(self.username)class OrderItem(models.Model):...class Meta:verbose_name_plural = verbose_name = "订单条目"def __str__(self):return "{}订单条目".format(self.order)

3. 修改shop目录下的admin.py, 将模型注册到admin应用中#

from django.contrib import admin
from .models import Category, Product, Order, OrderItemadmin.site.site_header = 'Django-Shop后台'
admin.site.site_title = 'Django-Shop后台'class OrderItemInline(admin.TabularInline):   # 建立内联表单, 用于将订单条目内嵌入订单的表单中model = OrderItem@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):fields = ('name', 'slug')list_display = ('name', 'slug')list_filter = ('name', 'slug')@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):fields = ('name', 'slug', 'category', 'price', 'available', 'description')  # 详情表单包含的字段, 支持嵌套分组(将一行展示)list_display = ('name', 'category', 'price', 'available', 'created', 'updated')  # 列表显示字段list_filter = ('category', 'available')   # 列表筛选字段search_fields = ('name', )  # 列表可搜索字段list_editable = ('price', 'available')  # 列表可编辑字段@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):fields = ('username', 'mobile', 'city', 'address', 'pay_status')list_display = ('username', 'mobile', 'city', 'pay_status', 'created', 'updated')list_filter = ('username', 'city', 'pay_status')search_fields = ('username', 'mobile')list_editable = ('pay_status', )inlines = [OrderItemInline]  # 嵌入订单条目内联表单

完成!!!

使用演示

注: 本次只简单实现了将模型注册到admin后台中,以实现通过admin后台对模型进行增删改查的基本功能, 其他定制功能/插件及admin页面定制, 没有涉及

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!


http://www.ppmy.cn/news/103594.html

相关文章

虚拟机配置

配置虚拟机网络 创建虚拟机 20G 4G内存 初始化用户名和密码 zhao 123456 克隆拷贝2个虚拟机 配置内存为2G 修改主机名和固定IP hostnamectl set-hostname node1 hostnamectl set-hostname node2 vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl stop network s…

vue中实现任意组件间通信(全局事件总线、消息订阅与发布)

1.全局事件总线,顾名思义,可以适用于任意组件间通信,我们需要通过$bus这个中间傀儡来实现,我们可以把$bus安装到Vue身上,这样可以让所有组件都能看到它, 1.1安装全局事件总线:我们可以在new Vu…

【机器学习】Kullback-Leibler (KL) divergence(KL 散度)

KL 散度是衡量两个概率分布之间差异的方法,我们首先考虑衡量两个概率分布之间差异的意义是什么: 模型评估与选择:在机器学习中,我们需要训练模型来拟合数据的概率分布。衡量预测分布与真实分布之间的差异可以帮助我们评估模型的性能&#xff…

09:mysql---事务

目录 1:事务简介 2:事务操作 3:事务四大特性 4:并发事务问题 5:事务隔离级别 1:事务简介 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功&…

如何使用Axios发送异步请求?

首先,让我们来介绍一下Axios。Axios是一个基于Promise的HTTP客户端,它可以帮助我们轻松地发送异步请求。它支持所有现代浏览器(包括IE8),并且还提供了Node.js的版本。 那么,如何使用Axios发送异步请求呢&a…

2023年上半年 软件设计师答案解析

前言:2023年上半年软考已经落幕了,学长整理了一下软件设计师的题目以及个人理解的答案(仅供参考)希望能够帮助参加软考的各个小伙伴能够清晰的估分,希望大家都能通过考试~ 目录 2023年上半年 软件设计师 上午试卷 2023…

【详解Collection接口、迭代器和Colletions工具类】

🌠作者:TheMythWS. 🎆专栏:《集合与数据结构》 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 目录 👀Collection接口的常用方法 💨…

ElasticSearch 报错集锦及解决方法

关联链接 1. Django 扩展 Elasticsearch - 启动与关闭 - 启动报错问题解决方法 2. Centos 7 安装Elasticsearch 6.2.4 - tar 包安装 - elasticsearch head(浏览器插件)和kibana 插件 tar 安装 1、报错 Error: Could not find or load main class org.e…