ale*_*nia 21 django django-models django-admin
有谁知道如何在Django模型中向属性添加自定义名称?例如,如果我有财产:
@property
def my_property(self):
return u'Returns some calculations'
Run Code Online (Sandbox Code Playgroud)
我在admin中将其显示为一列:
class MyAdmin(admin.ModelAdmin):
list_display=['my_property',]
Run Code Online (Sandbox Code Playgroud)
然后我看到"我的属性"列,我需要的是"属性X"列.我尝试使用my_property.short_description和my_property.verbose_name,但这都不起作用.
bbr*_*rik 36
Masatsugu Hosoi的解决方案工作正常,但您也可以使用装饰器并在属性getter(fget)上设置short_description:
@property
def my_property(self):
return u'Returns some calculations'
my_property.fget.short_description = u'Property X'
Run Code Online (Sandbox Code Playgroud)
vdb*_*oor 12
我最终也将该字段添加到ModelAdmin类中,重定向到模型:
class MyAdmin(admin.ModelAdmin):
list_display=['my_property',]
def my_property(self, object):
return object.my_property
my_property.short_description = _("Property X")
Run Code Online (Sandbox Code Playgroud)
小智 5
def _my_property(self):
return u'Returns some calculations'
_my_property.short_description = 'Property X'
my_property = property(_my_property)
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用 @ 装饰器语法来做到这一点,但你可以这样做:
def my_property(self):
return u'Returns some calculations'
property_x = property(my_property)
Run Code Online (Sandbox Code Playgroud)
然后,在您的管理类集中:
list_display = ['whatever', 'something_else', 'property_x']
Run Code Online (Sandbox Code Playgroud)
大写并不完美,但它会显示“Property x”。也许可以让 Django 显示__doc__属性,以便您可以更好地控制格式,但这只是一个开始。
您可以添加 doc= 关键字参数,如下所示:
property_x = property(my_property, doc='Property X')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10410 次 |
| 最近记录: |