基于Django Admin网站文档...我可以重写ModelAdmin.add_view以注入一个自定义视图。我需要注入TemplateView来覆盖一个模型更改/添加管理页面。

这个自定义视图将包含一个AngularJS应用,用于在管理员内部管理我的应用的一个复杂模型。

管理员

class ContractAdmin(admin.ModelAdmin):
    def add_view(self, request, form_url='', extra_context=None):
        return ContractAdminView.???? (.as_view() doesn't work)

# ContractAdminView is a TemplateView.


ps:这是在Django Admin中添加AngularJS支持的表单/页面的好方法吗?

最佳答案

as_view()返回应使用request参数调用的视图函数:

def add_view(self, request, form_url='', extra_context=None):
    return ContractAdminView.as_view()(request)


要将任何自定义视图添加到ModelAdmin,您应该覆盖ModelAdmin.get_urls()方法。为了与管理布局用户界面匹配,您的模板可以扩展admin/base_site.html模板:

{% extends "admin/base_site.html" %}

{% block title %}My title{% endblock %}

{% block content %}

    My content and forms here.

{% endblock %}

关于python - Django将TemplateView传递给ModelAdmin.add_view,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28440718/

10-12 02:47