當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Django ModelAdmin.readonly_fields用法及代碼示例


本文介紹 django.contrib.admin.ModelAdmin.readonly_fields 的用法。

聲明

ModelAdmin.readonly_fields

默認情況下,管理員將所有字段顯示為可編輯。此選項中的任何字段(應該是 listtuple )將按原樣顯示其數據且不可編輯;它們也被排除在用於創建和編輯的 ModelForm 之外。請注意,在指定 ModelAdmin.fields ModelAdmin.fieldsets 時,必須存在隻讀字段才能顯示(否則將被忽略)。

如果使用readonly_fields 而沒有通過 ModelAdmin.fields ModelAdmin.fieldsets 定義顯式排序,則它們將在所有可編輯字段之後添加到最後。

隻讀字段不僅可以顯示來自模型字段的數據,還可以顯示模型方法或ModelAdmin 類本身的方法的輸出。這與 ModelAdmin.list_display 的行為方式非常相似。這提供了一種使用管理接口來提供有關正在編輯的對象狀態的反饋的方法,例如:

from django.contrib import admin
from django.utils.html import format_html_join
from django.utils.safestring import mark_safe

class PersonAdmin(admin.ModelAdmin):
    readonly_fields = ('address_report',)

    # description functions like a model field's verbose_name
    @admin.display(description='Address')
    def address_report(self, instance):
        # assuming get_full_address() returns a list of strings
        # for each line of the address and you want to separate each
        # line by a linebreak
        return format_html_join(
            mark_safe('<br>'),
            '{}',
            ((line,) for line in instance.get_full_address()),
        ) or mark_safe("<span class='errors'>I can't determine this address.</span>")

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.contrib.admin.ModelAdmin.readonly_fields。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。