添加自定义 JS + 表单
meta Media
您可以使用表单类或将任意脚本注入管理员ModelAdmin.Media
https://docs.djangoproject.com/en/dev/ref/contrib/admin/
您可以构建自定义表单以接受任意信息 ( this_field_doesn't_actually_exist = forms.CharField
)。
您可以ModelAdmin
通过将方法名称添加到任何接受表单字段的参数中来添加方法,然后将该方法名称添加到readonly_fields
例如
readonly_fields = ('foo', )
fields = ('foo',)
def foo(self, obj):
return "Arbtrary HTML"
foo.allow_tags = True
现在你有
- 一个 HTML 图像
- 任意 javascript
- 传递给python的任意表单字段
添加自定义小部件
正如评论者所建议的那样,您可以构建知道如何呈现自身的小部件或自定义模型字段(包括添加额外媒体、显示输入、解析返回值以及在模型字段的情况下转换值以进行存储),但是如果您需要多个输入,我发现它相对复杂。
如果您想构建将在许多地方重复使用的东西,请研究此方法。
您还可以覆盖每个模型的管理模板
您还可以覆盖每个模型的一些模板。这可能是一种更简洁的方法,具体取决于您要进行多少自定义。
就个人而言,我会做 JS + readonly_field 直到我真的需要自定义表单。
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates
您还可以为每个模型管理员指定自定义路径:
ModelAdmin.add_form_template 自定义模板的路径,由 add_view() 使用。
ModelAdmin.change_form_template 自定义模板的路径,由 change_view() 使用。
ModelAdmin.change_list_template 自定义模板的路径,由 changelist_view() 使用。
ModelAdmin.delete_confirmation_template 自定义模板的路径,delete_view() 使用该模板在删除一个或多个对象时显示确认页面。
ModelAdmin.delete_selected_confirmation_template 自定义模板的路径,delete_selected 操作方法使用该模板在删除一个或多个对象时显示确认页面。请参阅操作文档。
ModelAdmin.object_history_template 自定义模板的路径,由 history_view() 使用。
您还可以完全覆盖管理视图
管理视图只是一个 django 视图。您可以通过覆盖以下方法从渲染到上下文完全覆盖它:
ModelAdmin.add_view(self, request, form_url='', extra_context=None) 模型实例添加页面的 Django 视图。请参阅下面的注释。
ModelAdmin.change_view(self, request, object_id, form_url='', extra_context=None) 模型实例版本页面的 Django 视图。请参阅下面的注释。
ModelAdmin.changelist_view(self, request, extra_context=None) 模型实例更改列表/操作页面的 Django 视图。请参阅下面的注释。
ModelAdmin.delete_view(self, request, object_id, extra_context=None) 模型实例删除确认页面的 Django 视图。请参阅下面的注释。
ModelAdmin.history_view(self, request, object_id, extra_context=None)