Django基于Models定制Admin后台实现过程解析


Posted in Python onNovember 11, 2020

简介

效果预览

Django基于Models定制Admin后台实现过程解析

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 models

class Category(models.Model):
  ...

  class Meta:
    verbose_name_plural = verbose_name = "分类"  # 该模型在后台显示的名称

  def __str__(self):  # 该模型每一个实例显示其name
    return self.name

class Product(models.Model):
  ...

  class Meta:
    verbose_name_plural = verbose_name = "商品"

  def __str__(self):
    return self.name

class 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, OrderItem

admin.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] # 嵌入订单条目内联表单

完成!!!

使用演示

添加订单及订单条目

Django基于Models定制Admin后台实现过程解析

订单列表

Django基于Models定制Admin后台实现过程解析

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
python操作excel让工作自动化
Aug 09 Python
Python threading的使用方法解析
Aug 28 Python
Python 使用type来定义类的实现
Nov 19 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 #Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 #Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 #Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 #Python
Django自定义YamlField实现过程解析
Nov 11 #Python
Python监听剪切板实现方法代码实例
Nov 11 #Python
如何通过python计算圆周率PI
Nov 11 #Python
You might like
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
js实现车辆管理系统
2020/08/26 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python字符编码判断方法分析
2016/07/01 Python
python实现排序算法解析
2018/09/08 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
医药营销专业个人自荐信
2013/09/29 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
学雷锋日活动总结
2015/02/06 职场文书
乔迁新居祝福语
2019/11/04 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL