Django从Models 10分钟定制一个Admin后台

Django自带一个Admin后台, 支持用户创建,权限配置和所有模型的增删改查功能, 只需要一些简单的配置就可快速得到一个开箱可用的后台管理系统

图片发自App

图片发自App

图片发自App

longtest原创

操作步骤

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 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]  # 嵌入订单条目内联表单

完成!!!

          注: 本次只简单实现了将模型注册到admin后台中,以实现通过admin后台对模型进行增删改查的基本功能, 其他定制功能/插件及admin页面定制, 没有涉及.

如果想要实现这方面的功能可以自行百度或联系我: 微信 fallinlove728HML

你可能感兴趣的:(Django从Models 10分钟定制一个Admin后台)