Django從Models 10分鐘定制一個(gè)Admin后臺(tái)

目錄

簡(jiǎn)介

效果預(yù)覽

Django自帶一個(gè)Admin后臺(tái), 支持用戶創(chuàng)建,權(quán)限配置和所有模型的增刪改查功能, 只需要一些簡(jiǎn)單的配置就可快速得到一個(gè)開箱可用的后臺(tái)管理系統(tǒng)

操作步驟

1. 更改設(shè)置,使用中文/亞洲時(shí)區(qū)

修改項(xiàng)目下django_shop目錄下的settings.py文件
修改以下三行

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_L10N = False

添加以下兩行, 已更改時(shí)間顯示格式

DATETIME_FORMAT = 'Y年m月d日 H:i:s'
DATE_FORMAT = 'Y年m月d日'

2. 為Models提供中文顯示名稱和實(shí)例名稱

修改項(xiàng)目shop目錄下的models.py, 為每個(gè)模型添加meta信息和str方法

from django.db import models

class Category(models.Model):
    ...

    class Meta:
        verbose_name_plural = verbose_name = "分類"    # 該模型在后臺(tái)顯示的名稱

    def __str__(self):   # 該模型每一個(gè)實(shí)例顯示其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, 將模型注冊(cè)到admin應(yīng)用中

from django.contrib import admin
from .models import Category, Product, Order, OrderItem

admin.site.site_header = 'Django-Shop后臺(tái)'
admin.site.site_title = 'Django-Shop后臺(tái)'


class OrderItemInline(admin.TabularInline):   # 建立內(nèi)聯(lián)表單, 用于將訂單條目?jī)?nèi)嵌入訂單的表單中
    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]  # 嵌入訂單條目?jī)?nèi)聯(lián)表單

完成!!!

使用演示

添加訂單及訂單條目
訂單列表

注: 本次只簡(jiǎn)單實(shí)現(xiàn)了將模型注冊(cè)到admin后臺(tái)中,以實(shí)現(xiàn)通過admin后臺(tái)對(duì)模型進(jìn)行增刪改查的基本功能, 其他定制功能/插件及admin頁面定制, 沒有涉及.
如果想要實(shí)現(xiàn)這方面的功能可以自行百度或聯(lián)系我: 微信 lockingfree

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容