我不是只谈论表单或静态数据的自定义字段,我在谈论添加一个实际上有自己代码的部分。在fieldset中有一个新条目,但它不会引入新字段,而是会引入一些关于用户活动的小报告。
实际上这个问题代表任何模型的更改页面。 Django文档向您展示如何覆盖此页面的模板,但是如果没有添加一些python代码也有什么好处呢?
答案 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 validation和ModelForms文档,因为附加到其ModelAdmin的模型的自定义表单为您提供了另一个(更深层次,更多方面)自定义级别。