0

我说的不仅仅是表单或静态数据的自定义字段,我说的是添加一个实际上有自己代码的部分。字段集中的一种新条目,但它引入的不是新字段,而是一些关于用户活动的小报告。

实际上这个问题代表任何模型的更改页面。Django 文档向您展示了如何覆盖此页面的模板,但是不添加一些 python 代码有什么好处呢?

4

2 回答 2

1

您可以覆盖默认模板和默认视图。

Django 有两种不同的视图和模板用于管理记录显示。一个用于创建一个新的,一个用于显示现有的并对其进行编辑。相关方法有:

这是如何准备相关覆盖视图的示例(取自添加/更改视图链接)

class MyModelAdmin(admin.ModelAdmin):

    # A template for a very customized change view:
    change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['osm_data'] = self.get_osm_info()
        return super(MyModelAdmin, self).change_view(request, object_id,
            form_url, extra_context=extra_context)

您必须检查 django 源代码中的默认 django 添加和更改模板(可能将其复制为新模板并在之后进行编辑),以了解如何准备自定义模板。

最后一点,永远不要直接从源代码编辑 django 模板或查看代码,因为它们被许多不同的应用程序使用,并且更新到 django 源代码可能会覆盖您的编辑或可能导致问题。

于 2012-11-03T14:57:38.463 回答
0

除了覆盖模板之外,Django 管理员具有很强的可扩展性。

确保查看文档中的ModelAdmin 方法部分。您几乎可以修改 ModelAdmin 的任何行为。

您还应该查看自定义表单验证ModelForms文档,因为附加到 ModelAdmin 的模型的自定义表单为您提供了另一个(在大多数情况下更深)级别的自定义。

于 2012-11-03T15:00:53.667 回答