• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Django之ModelAdmin詳解

    標簽: Django  Python  django  python

    添加應用建好表后,django的后臺管理,需要在admin.py 里進行后臺注冊
    有3種注冊方式

    # 第一種
    from django.contrib import admin
    from myproject.myapp.models import Author
    
    class AuthorAdmin(admin.ModelAdmin):
        pass
    admin.site.register(Author, AuthorAdmin)
    
    # 第二種
    from django.contrib import admin
    from myproject.myapp.models import Author
    
    admin.site.register(Author)
    
    # 第三種
    from django.contrib import admin
    from myproject.myapp.models import Author
    
    @admin.register(Author)
    class AuthorAdmin(admin.ModelAdmin):
        pass
    

    控制操作欄在頁面上的顯示位置。默認情況下,管理員更改列表在頁面()的頂部顯示操作。actions_on_top = True; actions_on_bottom = False

    ModelAdmin.actions_selection_counte
    控制是否在操作下拉菜單旁邊顯示選擇計數器。默認情況下,管理員更改列表將顯示它()。actions_selection_counter = True

    ModelAdmin.date_hierarchy
    設置date_hierarchy為 模型中的DateField或的名稱,DateTimeField更改列表頁面將包括該字段的基于日期的向下鉆取導航。

    # 此屬性將覆蓋記錄字段為空(None,空字符串等)的默認顯示值。默認值為-(破折號)。
    from django.contrib import admin
    
    class AuthorAdmin(admin.ModelAdmin):
        empty_value_display = '-empty-'
    
    #	覆蓋empty_value_display所有管理頁面 AdminSite.empty_value_display,或覆蓋類似這樣的特定字段
    from django.contrib import admin
    
    class AuthorAdmin(admin.ModelAdmin):
        fields = ('name', 'title', 'view_birth_date')
    
        def view_birth_date(self, obj):
            return obj.birth_date
    
        view_birth_date.empty_value_display = '???'
    

    從表單中排除的字段名稱列表

    from django.contrib import admin
    
    class AuthorAdmin(admin.ModelAdmin):
        fields = ('name', 'title')
    
    class AuthorAdmin(admin.ModelAdmin):
        exclude = ('birth_date',)
    

    使用該fields選項可以在“添加”和“更改”頁面上的表單中進行簡單的布局更改

    class FlatPageAdmin(admin.ModelAdmin):
        fields = ('url', 'title', 'content')
    

    url’, ‘title’ 在一行顯示

    class FlatPageAdmin(admin.ModelAdmin):
        fields = (('url', 'title'), 'content')
    

    設置fieldsets以控制管理員“添加”和“更改”頁面的布局。

    fieldsets是一個二元組列表,其中每個二元組在管理表單頁面上代表一個 。(A 是表格的“部分”。)

    兩元組的格式為,其中 是代表字段集標題的字符串,并且是有關字段集的信息字典,包括要在其中顯示的字段列表。(name, field_options)namefield_options

    from django.contrib import admin
    
    class FlatPageAdmin(admin.ModelAdmin):
        fieldsets = (
            (None, {
                'fields': ('url', 'title', 'content', 'sites')
            }),
            ('Advanced options', {
                'classes': ('collapse',),
                'fields': ('registration_required', 'template_name'),
            }),
        )
    

    在這里插入圖片描述
    設置list_filter以**管理員更改列表頁面右側欄中的過濾器
    在這里插入圖片描述

    list_filter 應為元素的列表或元組,其中每個元素應為以下類型之一:

    字段名稱,其中指定的字段應該是一個 BooleanField,CharField,DateField,DateTimeField, IntegerField,ForeignKey或ManyToManyField,例如:

    class PersonAdmin(admin.ModelAdmin):
        list_filter = ('is_staff', 'company')
    

    也可以使用__查找來跨越關系,例如:

    class PersonAdmin(admin.UserAdmin):
        list_filter = ('company__name',)
    

    ModelAdmin.list_max_show_all
    設置list_max_show_all以控制在“顯示全部”管理員更改列表頁面上可以顯示多少個項目。僅當總結果計數小于或等于此設置時,管理員才會在更改列表上顯示“顯示全部”鏈接。默認情況下,此設置為200。

    ModelAdmin.list_per_page
    設置list_per_page為控制在每個分頁的管理員更改列表頁面上顯示多少個項目。默認情況下,此設置為100。

    ModelAdmin.list_select_related
    設置list_select_related為告訴Django select_related()在管理更改列表頁面上檢索對象列表時使用。這樣可以為您節省大量數據庫查詢。

    該值應該是布爾值,列表或元組。默認值為 False。

    當value為時True,select_related()將始終被調用。當value設置False為時,Django將查看list_display并調用( select_related()如果ForeignKey存在)。

    如果您需要更細粒度的控制,請使用元組(或列表)作為的值 list_select_related。空元組將完全阻止Django調用 select_related。任何其他元組將直接select_related作為參數傳遞給 。例如:

    class ArticleAdmin(admin.ModelAdmin):
        list_select_related = ('author', 'category')
    

    設置ordering以指定應如何在Django管理視圖中對對象列表進行排序。這應該是與模型ordering參數格式相同的列表或元組。

    ModelAdmin.paginator
    用于分頁的分頁器類。默認情況下, django.core.paginator.Paginator使用。如果自定義分頁器類的構造函數接口不同 django.core.paginator.Paginator,您還需要提供一個實現ModelAdmin.get_paginator()。

    ModelAdmin.prepopulated_fields
    設置prepopulated_fields為字典,將字段名稱映射到應預填充的字段:

    class ArticleAdmin(admin.ModelAdmin):
        prepopulated_fields = {"slug": ("title",)}
    

    prepopulated_fields不接受DateTimeField,ForeignKey, OneToOneField,和ManyToManyField領域。

    ModelAdmin.preserve_filters
    現在,管理員可以在創建,編輯或刪除對象后在列表視圖上保留過濾器。您可以通過將此屬性設置為來恢復清除過濾器的先前行為False。

    ModelAdmin.radio_fields
    默認情況下,Django的管理員將選擇框界面()用于ForeignKey已choices設置或已設置的字段。如果中存在字段radio_fields,則Django將改用單選按鈕界面。假設group是ForeignKey對Person模型:

    class PersonAdmin(admin.ModelAdmin):
        radio_fields = {"group": admin.VERTICAL}
    

    ModelAdmin.save_as
    設置save_as為在管理員更改表單上啟用“另存為”功能。

    通常,對象具有三個保存選項:“保存”,“保存并繼續編輯”和“保存并添加另一個”。如果save_as為True,則將“保存并添加另一個”替換為“另存為新”按鈕,該按鈕可創建新對象(具有新ID)而不是更新現有對象。

    默認情況下,save_as設置為False。

    ModelAdmin.save_as_continue
    當save_as=True,節省了新對象后的默認重定向是該對象的更改視圖。如果設置了 save_as_continue=False,重定向將轉到更改列表視圖。

    默認情況下,save_as_continue設置為True。

    ModelAdmin.save_on_top
    設置save_on_top為在您的管理員更改表單頂部添加保存按鈕。

    通常,保存按鈕僅出現在表單底部。如果設置save_on_top,則按鈕將同時顯示在頂部和底部。

    默認情況下,save_on_top設置為False。

    ModelAdmin.search_fields
    設置search_fields為在管理員更改列表頁面上啟用搜索框。應該將其設置為一個字段名稱列表,只要有人在該文本框中提交搜索查詢,就將對其進行搜索。

    這些字段應該是某種文本字段,例如CharField或 TextField。您還可以使用ForeignKey或 ManyToManyField使用查詢API“跟隨”表示法執行相關的查詢:

    search_fields = ['foreign_key__related_fieldname']
    

    例如,如果您有一個包含作者的博客條目,則以下定義??將允許按作者的電子郵件地址搜索博客條目:

    search_fields = ['user__email']
    

    ModelAdmin樣式腳本定義
    有時候您想在添加/更改視圖中添加一些CSS和/或JavaScript。這可以通過Media在您的上使用內部類來完成ModelAdmin

    class ArticleAdmin(admin.ModelAdmin):
        class Media:
            css = {
                "all": ("my_styles.css",)
            }
            js = ("my_code.js",)
    

    InlineModelAdmin對象

    類InlineModelAdmin¶
    類TabularInline¶
    類StackedInline¶
    管理界面可以在與父模型相同的頁面上編輯模型。這些稱為內聯。假設您有以下兩個模型:

    from django.db import models
    
    class Author(models.Model):
       name = models.CharField(max_length=100)
    
    class Book(models.Model):
       author = models.ForeignKey(Author, on_delete=models.CASCADE)
       title = models.CharField(max_length=100)
    

    您可以在作者頁面上編輯作者創作的書籍。通過在中指定內聯,可以將內聯添加到模型中ModelAdmin.inlines:

    from django.contrib import admin
    
    class BookInline(admin.TabularInline):
        model = Book
    
    class AuthorAdmin(admin.ModelAdmin):
        inlines = [
            BookInline,
        ]
    
    版權聲明:本文為bbsddn原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/bbsddn/article/details/106060040

    智能推薦

    Django 之 生命周期詳解

    Django的生命周期 django的生命周期是:前端請求—>nginx—>uwsgi.—>中間件—>url路由---->view視圖—>orm---->拿到數據返回給view---->視圖將數據渲染到模版中拿到字符串---->中間件—>uwsgi---->ng...

    Python之django框架模型(models)詳解

    第一部分:模型類介紹 1.1 定義屬性 Django根據屬性的類型確定以下信息: 當前選擇的數據庫支持字段的類型 渲染管理表單時使用的默認html控件 在管理站點最低限度的驗證 django會為表創建自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設置某屬性為主鍵列后django不會再創建自動增長的主鍵列。 默認創建的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。 ...

    Django之同源和跨域、CSRF詳解

    一.CSRF 全稱是Cross Site Request Forgery,字面意思是跨站點偽造請求。 攻擊者通過HTTP請求江數據傳送到服務器,從而盜取回話的cookie。盜取回話cookie之后,攻擊者不僅可以獲取用戶的信息,還可以修改該cookie關聯的賬戶信息。 原理解釋: 為了防止跨站攻擊,django中需要在前端頁面中添加一個標簽:{% csrf_token %},他會在前端頁面生成一個...

    python之Django的model數據類型詳解

      閱讀目錄 一、創建django項目和創建app名稱 創建Django項目 創建app名稱 二、在models.py創建數據表 三、配置setting.py文件 四、models數據表導入sqlite 前言 Model 是Django表示數據的模式,這里說明一下,django可以不需要指定數據庫,因為pythont自帶sqlite數據庫,Django也支持各種主流的數據庫存,...

    django migration詳解

    用了這么久的migration,是時候總結一下這些命令都干了什么啦~ python manage.py makemigrations 首先,django會檢查創建或修改數據庫的合法性,如果不合法會給出提示,比如CharField必須設置max_length,新增了沒有默認值的非空字段。 第一次執行該操作:會在app下面創建migrations目錄,并創建0001_inital.py文件,文件中記錄...

    猜你喜歡

    Django--Session詳解

    1 , 啟用Session Django項目默認啟用Session。可以在settings.py文件中查看 2 ,  存儲方式 在settings.py文件中可以設置session的存儲方式 2.1 數據庫 如果存儲在數據庫中,需要在項INSTALLED_APPS中安裝Session應用。 數據庫中的表和表的結構: 由表結構可知,操作Session包括三個數據:鍵,值,過期時間。 2.2...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡