欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Django 后臺(tái)管理之后臺(tái)模型屬性詳解

 更新時(shí)間:2021年04月25日 10:40:50   作者:夢(mèng)想橡皮擦  
這篇文章主要介紹了Python Django 后臺(tái)管理之后臺(tái)模型屬性,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

十八、Django 后臺(tái)模型屬性篇

繼續(xù)在之前的項(xiàng)目中進(jìn)行代碼的編碼,首先要回憶一下通過(guò) createsuperuser 命令創(chuàng)建的管理員賬號(hào),如果忘記了,需要重新創(chuàng)建一個(gè)。

本篇博客涉及的代碼都在 admin.py 文件中,如果你首次打開本篇文章,請(qǐng)翻看本文結(jié)尾出的目錄大綱,可以再次學(xué)習(xí)。

為了便于學(xué)習(xí),提前在 models.py 中新增一個(gè)類,代碼如下:

from django.db import models

class MyCenter(models.Model):
    pass

18.1 在 admin 中注冊(cè)模型

為了讓 Django 能對(duì) models.py 文件中的類進(jìn)行管理操作,需要先注冊(cè)模型。

把上文提及的 MyCenter 模型進(jìn)行注冊(cè),此時(shí) admin.py 文件的代碼如下:

from django.contrib import admin
from .models import MyCenter

class MyCenterAdmin(admin.ModelAdmin):
    pass

admin.site.register(MyCenter, MyCenterAdmin)

注冊(cè)成功的結(jié)果就是在后臺(tái)頁(yè)面,可以看到對(duì)模型的操作入口。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

其它注冊(cè)方式
因?yàn)樯鲜?MyCenterAdmin 沒有實(shí)現(xiàn)任何功能,所以可以省略掉。修改代碼如下:

from django.contrib import admin
from .models import MyCenter

admin.site.register(MyCenter)

同樣可以使用裝飾器達(dá)到相同的效果。

from django.contrib import admin
from .models import MyCenter


@admin.register(MyCenter)
class MyCenterAdmin(admin.ModelAdmin):
    pass

18.2 Model.Admin 類提供的屬性

在上文你已經(jīng)看到了,admin.py 文件中的類默認(rèn)繼承自 Model.Admin,既然繼承自它,那接下來(lái)要掌握的就是它給我們提供的屬性內(nèi)容了。

工作開始前,我們先將 admin.py 文件中的代碼進(jìn)行修改,主要為了便于頁(yè)面展示。

models.py

from django.db import models
from django.contrib.auth.models import User

class Customer(models.Model):
    # 自增主鍵
    _id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20, verbose_name="客戶名")
    mobile = models.IntegerField(default=0, verbose_name="手機(jī)號(hào)碼")


class Score(models.Model):
    # 自增主鍵
    _id = models.AutoField(primary_key=True)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    score = models.IntegerField(default=0, verbose_name="分?jǐn)?shù)")

admin.py

from django.contrib import admin
from .models import Customer


@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    pass

上述內(nèi)容補(bǔ)充完整之后,就可以進(jìn)行后臺(tái)對(duì)數(shù)據(jù)進(jìn)行維護(hù)了。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

接下來(lái)就要學(xué)習(xí)第一個(gè)屬性:date_hierarchy

18.2.1 date_hierarchy

該屬性用于將時(shí)間列轉(zhuǎn)換為可過(guò)濾字段,完成該操作需要在 models.py 中新增好 models.DateField 類型的字段。

create_time = models.DateField(default=timezone.now)

當(dāng)模型發(fā)生變化,需要用下述命令進(jìn)行一下同步。

python manage.py makemigrations scoring
python manage.py migrate

模型變化遷移之后,就可以在 admin.py 中進(jìn)行配置了。

from django.contrib import admin
from .models import Customer

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    date_hierarchy = "create_time"

此時(shí)再運(yùn)行應(yīng)用之后,就可以在 customer 頁(yè)面查看到最終結(jié)果了。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

18.2.2 actions_on_top/actions_on_bottom

控制動(dòng)作條的顯示位置,動(dòng)作即操作。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

修改 admin.py 文件代碼如下,可以控制動(dòng)作條的展示位置。

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    date_hierarchy = "create_time"
    # actions_on_top = False
    actions_on_bottom = True

18.2.3 actions_selection_counter

動(dòng)作條后面的計(jì)數(shù)是否展示。當(dāng)其設(shè)置為 False 之后,后面的數(shù)字消失。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

18.2.4 list_display

該屬性可以控制模型中列表顯示的字段。代碼修改為如下內(nèi)容:

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    date_hierarchy = "create_time"
    actions_on_top = False
    actions_on_bottom = True
    list_display = ["_id", "name", "mobile", "create_time"]

最終呈現(xiàn)的數(shù)據(jù)如下:

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

list_display 還可以給字段嵌套一個(gè)函數(shù)。

def warp_name(obj):
    return f"客戶名:{obj.name}"

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    date_hierarchy = "create_time"
    actions_on_top = False
    actions_on_bottom = True

	# warp_name 為函數(shù)名,函數(shù)內(nèi)會(huì)接收一個(gè)對(duì)象
    list_display = ["_id", warp_name, "mobile", "create_time"]
    warp_name.short_description = "格式化的名字"

也可以將上述代碼的 warp_name 函數(shù),放置到 CustomerAdmin 內(nèi)部。

@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
    date_hierarchy = "create_time"
    actions_on_top = False
    actions_on_bottom = True

    def warp_name(self, obj):
        return f"客戶名:{obj.name}"

    list_display = ["_id", 'warp_name', "mobile", "create_time"]

    warp_name.short_description = "格式化名字"

此時(shí)最大的區(qū)別就是 list_display 的列表中自定義的函數(shù)為一個(gè)字符串形式。

默認(rèn)情況下 list_display 的第一項(xiàng)是超鏈接,點(diǎn)擊可以進(jìn)行編輯頁(yè)面,可以通過(guò) list_display_links 進(jìn)行設(shè)置。

  • list_display_links:為 None 表示不顯示任何鏈接;
  • 列表:標(biāo)記哪些需要超鏈接。

18.2.5 empty_value_display

空數(shù)據(jù)展示的方式,默認(rèn)空數(shù)據(jù)展示的是 --,使用該屬性之后,可以進(jìn)行自定義設(shè)置。
修改 models.py 文件,增加備注列。

class Customer(models.Model):
    # 自增主鍵
    _id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20, verbose_name="客戶名")
    mobile = models.IntegerField(default=0, verbose_name="手機(jī)號(hào)碼")
    create_time = models.DateField(default=timezone.now)
    mark = models.CharField(max_length=50, null=True, blank=True)

重新運(yùn)行遷移命令,然后運(yùn)行應(yīng)用,得到如下效果。

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

接下來(lái)使用該字段進(jìn)行數(shù)據(jù)的展示,在 admin.py 文件中進(jìn)行設(shè)置。

empty_value_display = '/'

運(yùn)行之后得到的結(jié)果如下:

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

18.2.6 fields

控制顯示的表單字段與順序組合。例如增加如下代碼之后,核對(duì)結(jié)果如下:

list_display = ["_id", 'warp_name', "mobile", "create_time","mark"]
fields = ["mobile","name"]

Python Django 后臺(tái)管理也要好好學(xué)之后臺(tái)模型屬性

18.2.7 其他要補(bǔ)充的屬性

filter_horizontalfilter_vertical
篩選菜單的橫排展示與豎排展示。

list_editable
可編輯字段。

list_filter
過(guò)濾器屬性設(shè)置。

list_per_page
每頁(yè)顯示的數(shù)據(jù)條數(shù)。

ordering
排序字段列表。

paginator
分頁(yè)類對(duì)象,需要提前引入 django.core.paginator.Paginator。

radio_fields
字段在表單中是單選按鈕。

readonly_fields
不可編輯字段。

search_fileds
列表頁(yè)增加的篩選字段。

到此這篇關(guān)于Python Django 后臺(tái)管理之后臺(tái)模型屬性的文章就介紹到這了,更多相關(guān)Python Django 后臺(tái)管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Jmeter實(shí)現(xiàn)在請(qǐng)求param和body里面加入隨機(jī)參數(shù)

    利用Jmeter實(shí)現(xiàn)在請(qǐng)求param和body里面加入隨機(jī)參數(shù)

    本文介紹了如何使用jemeter實(shí)現(xiàn)新增接口壓力測(cè)試中的隨機(jī)參數(shù)生成,首先,使用函數(shù)助手對(duì)話框生成隨機(jī)數(shù),然后將生成的隨機(jī)數(shù)作為參數(shù)放入請(qǐng)求中,無(wú)論請(qǐng)求格式是json、xml還是text等,如果param和body同時(shí)存在并需要隨機(jī)生成參數(shù),可以把參數(shù)寫入到請(qǐng)求地址中
    2024-10-10
  • RuntimeError:CUDA?out?of?memory多種場(chǎng)景下的解決方案

    RuntimeError:CUDA?out?of?memory多種場(chǎng)景下的解決方案

    若遇到RuntimeError:?CUDA?out?of?memory錯(cuò)誤,通常意味著GPU內(nèi)存不足以處理當(dāng)前的計(jì)算需求,本文就來(lái)介紹一下多種場(chǎng)景下的解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • pycharm配置QtDesigner的超詳細(xì)方法

    pycharm配置QtDesigner的超詳細(xì)方法

    這篇文章主要介紹了pycharm配置QtDesigner的超詳細(xì)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • python逐行讀取文件內(nèi)容的三種方法

    python逐行讀取文件內(nèi)容的三種方法

    這篇文章主要介紹了python逐行讀取文件內(nèi)容的三種方法,非常的簡(jiǎn)單,下面直接看代碼吧
    2014-01-01
  • Python源碼加密與Pytorch模型加密分別介紹

    Python源碼加密與Pytorch模型加密分別介紹

    在實(shí)際的工作中,有時(shí)候我們需要部署自己的Python應(yīng)用,但這時(shí)候我們并不希望別人能夠看到自己的Python源程序。因此,我們需要為自己的源代碼進(jìn)行加密,Python已經(jīng)為我們提供了這樣一套工作機(jī)制
    2022-12-12
  • 如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像

    如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像

    我發(fā)布了一個(gè)通過(guò)FTP自動(dòng)優(yōu)化新圖像的教程。這次我們將抓取整個(gè)網(wǎng)站,并在本地優(yōu)化我們遇到的圖像,按URL組織,怎么來(lái)操作呢,下面跟隨小編一起學(xué)習(xí)使用Python 抓取和優(yōu)化所有網(wǎng)站圖像的方法,感興趣的朋友一起看看吧
    2023-02-02
  • 在Python中給Nan值更改為0的方法

    在Python中給Nan值更改為0的方法

    今天小編就為大家分享一篇在Python中給Nan值更改為0的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python base64編碼解碼實(shí)例

    Python base64編碼解碼實(shí)例

    這篇文章主要介紹了Python base64編碼解碼實(shí)例,本文直接給出實(shí)例代碼,使用也很簡(jiǎn)單,需要的朋友可以參考下
    2015-06-06
  • 詳解Python數(shù)據(jù)結(jié)構(gòu)與算法中的順序表

    詳解Python數(shù)據(jù)結(jié)構(gòu)與算法中的順序表

    線性表在計(jì)算機(jī)中的表示可以采用多種方法,采用不同存儲(chǔ)方法的線性表也有著不同的名稱和特點(diǎn)。線性表有兩種基本的存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。本文將介紹順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)以及各種基本運(yùn)算的實(shí)現(xiàn)。需要的可以參考一下
    2022-01-01
  • python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解

    python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解

    這篇文章主要介紹了python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫(kù),更是提供了強(qiáng)大的日期數(shù)據(jù)處理的功能,是處理時(shí)間序列的利器,需要的朋友可以參考下
    2019-07-07

最新評(píng)論