欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Django基于Models定制Admin后台实现过程解析

程序员文章站 2022-03-11 10:12:16
简介效果预览django自带一个admin后台, 支持用户创建,权限配置和所有模型的增删改查功能, 只需要一些简单的配置就可快速得到一个开箱可用的后台管理系统操作步骤1. 更改设置,使用中文/亚洲时区...

简介

效果预览

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页面定制, 没有涉及.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。