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的加密模块md5、sha、crypt使用实例
Sep 28 Python
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
Python计算字符宽度的方法
Jun 14 Python
python字符串常用方法
Jun 14 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
基于python实现图片转字符画代码实例
Sep 04 Python
Python urlopen()参数代码示例解析
Dec 10 Python
分析Python list操作为什么会错误
Nov 17 Python
python_tkinter弹出对话框创建
Mar 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
dedecms模板标签代码官方参考
2007/03/17 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
validator验证控件使用代码
2010/11/23 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python编程中的异常处理教程
2015/08/21 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Python ellipsis 的用法详解
2020/11/20 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
学院领导推荐信
2013/10/30 职场文书
保护环境倡议书100字
2014/05/19 职场文书
企业标语大全
2014/07/01 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
写给老师的保证书
2015/05/09 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
公司员工奖惩制度
2015/08/04 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript