wagtail框架的wagtail_hooks.py文件中给list_display添加数据库中没有的字段,每条记录都不一样 并显示在页面上
时间: 2024-02-09 16:09:21 浏览: 83
Python库 | wagtail_site_of_Alexandro.by-0.0.1-py3-none-any.whl
要在`wagtail_hooks.py`文件中添加数据库中没有的字段并显示在页面上,您可以使用`list_display`属性来定义要显示的字段列表。但是,由于这些字段不在数据库中,您需要使用方法来动态生成它们。
以下是一个示例,演示如何在`list_display`中添加一个动态生成的字段:
```python
from django.utils.html import format_html
from wagtail.contrib.modeladmin.options import ModelAdmin
from .models import MyModel
class MyModelAdmin(ModelAdmin):
model = MyModel
list_display = ('title', 'custom_field')
def custom_field(self, obj):
# 这里假设您要显示的字段是一个名为“extra_field”的属性
if hasattr(obj, 'extra_field'):
value = obj.extra_field
else:
value = 'N/A'
return format_html('<span>{}</span>', value)
custom_field.short_description = 'Extra Field'
```
在这个例子中,我们定义了一个名为`custom_field`的方法,并将其添加到了`list_display`中。在`custom_field`方法中,我们首先检查对象`obj`是否有一个名为`extra_field`的属性。如果有,我们将它的值赋值给`value`变量;否则,我们将`value`设置为字符串“N/A”。
最后,我们使用`format_html`方法和`<span>`标签来格式化并渲染`value`,并将其返回给`list_display`。
请注意,我们还使用了`short_description`属性来指定要在列表页上显示的列标题。
阅读全文