在 Django 中设置函数字段的详细名称
Setting verbose name of function field in Django
我有一个像这样的简单模型:
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'
和管理员:
class ArtistAdmin(admin.ModelAdmin):
list_display = ['name', 'test_function']
search_fields = ['name']
readonly_fields = []
现在在列表视图中,功能字段详细显示为TEST_FUNCTION
:
在普通字段中,我会使用 Field.verbose_name
参数。
如何使用函数字段实现?
在对象方面的思考,我会尝试 return 模拟 CharField
而不是简单的字符串。这会以某种方式起作用吗?
根据 the documentation,您可以为函数指定一个名为 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'
如果设置,Django Admin 将显示此描述而不是函数名称。更好的是,将其更改为 _('Name')
以允许不同的翻译!
我有一个像这样的简单模型:
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'
和管理员:
class ArtistAdmin(admin.ModelAdmin):
list_display = ['name', 'test_function']
search_fields = ['name']
readonly_fields = []
现在在列表视图中,功能字段详细显示为TEST_FUNCTION
:
在普通字段中,我会使用 Field.verbose_name
参数。
如何使用函数字段实现?
在对象方面的思考,我会尝试 return 模拟 CharField
而不是简单的字符串。这会以某种方式起作用吗?
根据 the documentation,您可以为函数指定一个名为 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'
如果设置,Django Admin 将显示此描述而不是函数名称。更好的是,将其更改为 _('Name')
以允许不同的翻译!