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

简介

效果预览

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容