Джанго краткое описание недвижимости - PullRequest
18 голосов
/ 30 августа 2011

Кто-нибудь знает, как добавить собственное имя для свойства в модели 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, ничего из этого не работает.

Ответы [ 7 ]

32 голосов
/ 08 декабря 2015

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

@property
def my_property(self):
    return u'Returns some calculations'
my_property.fget.short_description = u'Property X'
12 голосов
/ 27 ноября 2011

Я также добавил поле к классу ModelAdmin, перенаправив на модель:

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

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

    my_property.short_description = _("Property X")
4 голосов
/ 02 июня 2014
def _my_property(self):
    return u'Returns some calculations'  
_my_property.short_description =  'Property X'
my_property = property(_my_property)
3 голосов
/ 30 августа 2011

Я не знаю, как это сделать с помощью синтаксиса @ 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')
0 голосов
/ 16 апреля 2019

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

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

после этого добавьте my_property к list_display

list_display=['my_property',]

как это:

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

    def my_property(self , obj):
        return 'Returns some calculations'
    my_property.short_description = 'Property X'
0 голосов
/ 18 марта 2015

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

0 голосов
/ 27 ноября 2013

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

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

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

my_property.short_description = _("Property X")

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

...