Установка подробного имени поля функции в Django - PullRequest
2 голосов
/ 23 марта 2020

У меня есть простая модель, подобная этой:

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'

И Admin:

class ArtistAdmin(admin.ModelAdmin):
    list_display = ['name', 'test_function']
    search_fields = ['name']
    readonly_fields = []

Теперь в представлении списка поле функции обозначено как TEST_FUNCTION:

list view in django admin

В обычном поле я бы использовал параметр Field.verbose_name.

Как мне добиться этого с помощью поля функции?

В терминах мышления объекта я бы попытался вернуть смоделированный CharField вместо простой строки. Будет ли это работать как-то?

1 Ответ

1 голос
/ 23 марта 2020

Согласно документации , вы можете присвоить функции атрибут с именем 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 покажет это описание, а не имя функции Более того, измените его на _('Name'), чтобы разрешить различные переводы!

...