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 相关文章推荐
Python实现的一个自动售饮料程序代码分享
Aug 25 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
python读写csv文件方法详细总结
Jul 05 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 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
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
js调用css属性写法
2013/09/21 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Python图算法实例分析
2016/08/13 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
django输出html内容的实例
2018/05/27 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
Why we need EJB
2016/10/20 面试题
道路建设实施方案
2014/03/18 职场文书
融资租赁计划书
2014/04/29 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
党员十八大心得体会
2014/09/12 职场文书
公司规章制度范本
2015/08/03 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
Python访问Redis的详细操作
2021/06/26 Python