当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。