假设我有这样的模型:
class Article(models.Model):
...
def get_route(self):
...
return data
当我想在管理面板中显示get_route()
返回的值时,我必须创建这样的自定义方法:
def list_display_get_route(self, obj):
return obj.get_route()
list_display = ('list_display_get_route', ...)
我最近发现,如果我使用get_route()
装饰@property
,则无需使用list_display_get_route()
,以下内容将有效:
models.py
@property
def get_route(self):
...
return data
admin.py
list_display = ('get_route', ...)
这是正确的做法吗?这个解决方案有什么缺点吗?
答案 0 :(得分:4)
使用get_route
中的list_display
即使您没有将其作为财产,也应该有效。
class Article(models.Model):
def get_route(self):
...
return data
class ArticleAdmin(admin.ModelAdmin):
list_display = ('get_route', ...)
有关支持的值类型列表,请参阅list_display
文档。第四个示例"表示模型"上的属性的字符串,相当于您的get_route
方法。
如果您愿意,可以使用property
装饰器,但在这种情况下,将其命名为route
会更有意义。
@property
def route(self):
...
return data
class ArticleAdmin(admin.ModelAdmin):
list_display = ('route', ...)