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中lambda的用法及其与def的区别解析
Jul 28 Python
python中的装饰器详解
Apr 13 Python
Python解惑之整数比较详解
Apr 24 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
Python正则表达式指南 推荐
Oct 09 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
详细分析Python collections工具库
Jul 16 Python
重构Python代码的六个实例
Nov 25 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
利用python做数据拟合详情
Nov 17 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/04/21 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python之yield和Generator深入解析
2019/09/18 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
pygame实现弹球游戏
2020/04/14 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
表彰先进集体通报
2014/01/12 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
甘南现象心得体会
2014/09/11 职场文书
简历中自我评价范文
2015/03/11 职场文书
升职自荐信范文
2015/03/27 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书