from django.contrib import admin
from .models import AdvancedModel
# 定义一个模型的管理器,用于在Django Admin中展示更复杂的字段
class AdvancedModelAdmin(admin.ModelAdmin):
list_display = ['id', 'complex_field', 'edit_link']
readonly_fields = ['edit_link']
# 自定义编辑链接字段,用于在列表中提供快速编辑链接
def edit_link(self, obj):
return f'<a href="/admin/appname/advancedmodel/{obj.id}/change/">编辑</a>'
edit_link.allow_tags = True
# 注册模型和管理器到Django Admin
admin.site.register(AdvancedModel, AdvancedModelAdmin)
这段代码演示了如何在Django Admin中注册一个模型并定义一个包含自定义编辑链接的管理器。list_display
定义了要在列表中显示的字段,而 edit_link
方法提供了一个自定义的列显示编辑链接。readonly_fields
确保了这个字段是只读的,不能被编辑。allow_tags
参数允许在字段输出中使用HTML标签。这是一个在实际项目中可能用到的技巧,展示了如何通过自定义字段和管理器增强Django Admin的功能。