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处理中文编码和判断编码示例
Feb 26 Python
Python中的__SLOTS__属性使用示例
Feb 18 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
浅析使用Python操作文件
Jul 31 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python代码中如何读取键盘录入的值
May 27 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 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实现链结人气统计
2006/10/09 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
php随机抽奖实例分析
2015/03/04 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
QQ登录简单实现代码
2021/03/09 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
python找出因数与质因数的方法
2019/07/25 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
关于保护环境的建议书
2014/05/13 职场文书
化工专业求职信
2014/07/01 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android