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中的sort方法使用详解
Jul 25 Python
python文件名和文件路径操作实例
Sep 29 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
Python3基于sax解析xml操作示例
May 22 Python
Python实现合并两个列表的方法分析
May 28 Python
python 获取字符串MD5值方法
May 29 Python
解决python 找不到module的问题
Feb 12 Python
python实现猜数游戏
Mar 27 Python
Python csv文件记录流程代码解析
Jul 16 Python
Python实现弹球小游戏
Aug 01 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
PyQt5通过信号实现MVC的示例
Feb 06 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实现过滤表单提交中html标签的方法
2014/10/17 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
详解js中==与===的区别
2017/01/08 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
分享一个简单的python读写文件脚本
2017/11/25 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
一道输出判断型Java面试题
2014/10/01 面试题
工程售后服务承诺书
2014/05/21 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL