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'
Это решит проблему.