1. 程式人生 > 程式設計 >Django基於Models定製Admin後臺實現過程解析

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','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','pay_status','updated')
  list_filter = ('username','pay_status')
  search_fields = ('username','mobile')
  list_editable = ('pay_status',)
  inlines = [OrderItemInline] # 嵌入訂單條目內聯表單

完成!!!

使用演示

新增訂單及訂單條目

Django基於Models定製Admin後臺實現過程解析

訂單列表

Django基於Models定製Admin後臺實現過程解析

注: 本次只簡單實現了將模型註冊到admin後臺中,以實現通過admin後臺對模型進行增刪改查的基本功能,其他定製功能/外掛及admin頁面定製,沒有涉及.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。