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+Django在windows下的开发环境配置图解
Nov 11 Python
解读Python中degrees()方法的使用
May 18 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
Feb 28 Python
python解释器spython使用及原理解析
Aug 24 Python
python默认参数调用方法解析
Feb 09 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
Python实现UDP程序通信过程图解
May 15 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生成网站桌面快捷方式代码分享
2014/10/11 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python中的super()方法使用简介
2015/08/14 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python中有关时间日期格式转换问题
2019/12/25 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
自我评价格式
2014/01/06 职场文书
上班迟到检讨书
2014/09/15 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
车间安全生产管理制度
2015/08/06 职场文书