在 Django 中设置函数字段的详细名称

Dan*_* W. 4 django django-models django-admin

我有一个像这样的简单模型:

class Artist(models.Model):
    class Meta:
        verbose_name = "Artist"
        verbose_name_plural = "Artists"

    name = models.CharField(max_length=128, unique=True, blank=False)

    def test_function(self):
        return 'xyz'
Run Code Online (Sandbox Code Playgroud)

和管理员:

class ArtistAdmin(admin.ModelAdmin):
    list_display = ['name', 'test_function']
    search_fields = ['name']
    readonly_fields = []
Run Code Online (Sandbox Code Playgroud)

现在在列表视图中,函数字段详细如下TEST_FUNCTION

Django 管理中的列表视图

在普通字段中我会使用该Field.verbose_name参数。

我如何通过函数字段实现这一点?

从对象术语的角度来看,我会尝试返回一个模拟的CharField而不是一个简单的字符串。这会以某种方式起作用吗?

hed*_*gie 5

根据文档,您可以为该函数提供一个名为的属性short_description

class PersonAdmin(admin.ModelAdmin):
    list_display = ('upper_case_name',)

    def upper_case_name(self, obj):
        return ("%s %s" % (obj.first_name, obj.last_name)).upper()
    upper_case_name.short_description = 'Name'
Run Code Online (Sandbox Code Playgroud)

如果设置,Django 管理员将显示此描述而不是函数名称。更好的是,将其更改_('Name')为允许不同的翻译!