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代码检查工具pylint 让你的python更规范
Sep 05 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
django使用LDAP验证的方法示例
Dec 10 Python
python里 super类的工作原理详解
Jun 19 Python
对django中foreignkey的简单使用详解
Jul 28 Python
Python Celery多队列配置代码实例
Nov 22 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
Python 爬虫的原理
Jul 30 Python
Python获取指定网段正在使用的IP
Dec 14 Python
Python数据分析之绘图和可视化详解
Jun 02 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
Python音乐爬虫完美绕过反爬
Aug 30 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中几个常用的魔术常量
2012/02/23 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
jquery 选择器部分整理
2009/10/28 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
应届生骨科医生求职信
2013/10/31 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
加油口号大全
2014/06/13 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
MySQL空间数据存储及函数
2021/09/25 MySQL