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程序的执行效率的教程
Apr 02 Python
python基于socket实现网络广播的方法
Apr 29 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python机器学习之SVM支持向量机
Dec 27 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python队列Queue的详解
May 10 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
python opencv 简单阈值算法的实现
Aug 04 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
Python脚本调试工具安装过程
Jan 11 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
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
javascript parseInt 大改造
2009/09/27 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
修复 Django migration 时遇到的问题解决
2018/06/14 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Python3 assert断言实现原理解析
2020/03/02 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
普天C++笔试题
2016/03/20 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
销售人员获奖感言
2014/02/05 职场文书
学校献爱心活动总结
2014/07/08 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL