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在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
python执行使用shell命令方法分享
Nov 08 Python
Python socket实现简单聊天室
Apr 01 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
在django admin中添加自定义视图的例子
Jul 26 Python
django从后台返回html代码的实例
Mar 11 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
python反爬虫方法的优缺点分析
Nov 25 Python
python随机打印成绩排名表
Jun 23 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 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中file_get_contents高?用法实例
2014/09/24 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
python破解zip加密文件的方法
2018/05/31 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
linux面试题参考答案(7)
2014/07/24 面试题
介绍一下XMLHttpRequest对象
2012/02/12 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
共筑中国梦演讲稿
2014/04/23 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
七年级作文之环保作文
2019/10/17 职场文书
python之django路由和视图案例教程
2021/07/26 Python