如何将自定义部分添加到admin / auth / user /(x)页面?

时间:2012-11-03 13:51:57

标签: django django-admin

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

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

2 个答案:

答案 0 :(得分:1)

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

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

这是如何准备相关覆盖视图(取自Add/Change View链接)

的示例
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模板或vieew代码,因为它们被许多不同的应用程序使用,并且更新到django源代码可能会覆盖您的编辑或可能导致问题。 / p>

答案 1 :(得分:0)

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

请务必查看文档中的ModelAdmin methods部分。 您几乎可以修改ModelAdmin的任何行为。

您还应该查看custom form validationModelForms文档,因为附加到其ModelAdmin的模型的自定义表单为您提供了另一个(更深层次,更多方面)自定义级别。