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 19 Python
python实现的udp协议Server和Client代码实例
Jun 04 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
在Python的Django框架中创建语言文件
Jul 27 Python
Python采用Django开发自己的博客系统
Sep 29 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
Django 限制访问频率的思路详解
Dec 24 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
python 实现两个npy档案合并
Jul 01 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 生成饼图 三维饼图
2009/09/28 PHP
PDO::query讲解
2019/01/29 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
详解VUE 数组更新
2017/12/16 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python处理html转义字符的方法详解
2016/07/01 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python多线程扫描端口代码示例
2018/02/09 Python
代码详解django中数据库设置
2019/01/28 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Django异步任务线程池实现原理
2019/12/17 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
Servlet方面面试题
2016/09/28 面试题
留学自荐信的技巧
2013/10/17 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书