假设我有这样的模型:
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', ...)
我最近发现,如果我用 @property
装饰 get_route()
就不需要使用 list_display_get_route()
和下面的将工作:
模型.py
@property
def get_route(self):
...
return data
admin.py
list_display = ('get_route', ...)
这是正确的做法吗?这个解决方案有什么缺点吗?
最佳答案
在 list_display
中使用 get_route
应该可以工作,即使您不将其设为属性也是如此。
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', ...)
关于python - Django 模型,方法的@property 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785514/