2012-11-03 31 views
0

我不是只谈论窗体或静态数据的自定义字段,我在谈论添加一个实际上有它自己的代码的部分。在字段集中有一个新的条目,但它不是引入新的字段,而是引入一些关于用户活动的小报告。如何将自定义栏目添加到admin/auth/user /(x)页面?

其实这个问题代表任何模型的更改页面。 Django文档告诉你如何覆盖这个页面的模板,但是没有添加一些python代码还有什么好处呢?

回答

1

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

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

这是如何准备相关的越权访问量为例(取from 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) 

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

最后一点,决不编辑Django的模板或vieew代码直接从源,因为它们是由许多不同的应用和更新,并使用Django的源代码可能会覆盖您的修改或可能引起问题。

+0

谢谢。你为我节省了很多时间。 –

0

Django管理员在覆盖模板之外是非常具有可扩展性的。

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

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

相关问题