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 相关文章推荐
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python中装饰器高级用法详解
Dec 25 Python
使用tensorflow实现线性回归
Sep 08 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
python虚拟环境迁移方法
Jan 03 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
python学生管理系统的实现
Apr 05 Python
关于Python解包知识点总结
May 05 Python
Python flask框架实现查询数据库并显示数据
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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
Javascript String.replace的妙用
2009/09/08 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
深入理解node.js http模块
2018/01/24 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
用Python逐行分析文件方法
2019/01/28 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
python求前n个阶乘的和实例
2020/04/02 Python
Python requests上传文件实现步骤
2020/09/15 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
Whistles官网:英国女装品牌
2020/08/14 全球购物
标记环介质访问控制协议
2016/03/27 面试题
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
分层教学实施方案
2014/03/19 职场文书
项目合作意向书范本
2014/04/01 职场文书
租车协议书范本
2014/04/22 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS