Django описание недвижимости

Кто-нибудь знает, как добавить пользовательское имя в свойство в модели Django? Например, если я получил свойство:

@property
def my_property(self):
     return u'Returns some calculations'

и я показываю его в качестве столбца:

class MyAdmin(admin.ModelAdmin):
    list_display=['my_property',]

Затем я вижу столбец "Моя собственность" и то, что мне нужно, это столбец "Свойство X". Я пробовал с my_property.short_description и my_property.verbose_name, ничего из этого не работает.

Ответы

Ответ 1

Решение Masatsugu Hosoi отлично работает, но вы также можете использовать декоратор и установить short_description на свойство getter (fget):

@property
def my_property(self):
    return u'Returns some calculations'
my_property.fget.short_description = u'Property X'

Ответ 2

Я закончил добавление поля в класс ModelAdmin, перенаправляя к модели:

class MyAdmin(admin.ModelAdmin):
    list_display=['my_property',]

    def my_property(self, object):
        return object.my_property

    my_property.short_description = _("Property X")

Ответ 3

def _my_property(self):
    return u'Returns some calculations'  
_my_property.short_description =  'Property X'
my_property = property(_my_property)

Ответ 4

Я не знаю, как это сделать с синтаксисом @decorator, но вы можете сделать:

def my_property(self):
    return u'Returns some calculations'
property_x = property(my_property)

Затем в вашем классе администратора:

list_display = ['whatever', 'something_else', 'property_x']

Капитализация не идеальна, но отобразит "Свойство x". Возможно, Django может отобразить __doc__ для свойства, чтобы вы могли лучше управлять форматированием, но это начало.

Вы можете добавить аргумент doc = ключевое слово как таковое:

property_x = property(my_property, doc='Property X')

Ответ 5

Вы можете переопределить класс свойств как класс New-style. Таким образом, вы можете добавить все необходимые атрибуты

class property(property):
    """Redefine property object"""
    pass

@property
def my_property(self):
     return u'Returns some calculations'

my_property.short_description = _("Property X")

На самом деле я не уверен, что это хорошая практика. Во всяком случае, я не вижу никаких противопоказаний.

Ответ 6

в admin.py в ваш ModelAdmin добавьте этот код:

def my_property(self , obj):
    return 'Returns some calculations'
my_property.short_description = 'Property X'

Ответ 7

Этот поток устарел, но в случае, если кто-то бродит здесь, решение, которое работает, это просто добавить short_description в method/property в вашем классе.

def my_property(self):
    # Some things done
my_property.short_description = 'Property'

Это решит проблему.