Django在管理站点中添加自定义视图

Django在管理站点中添加自定义视图,django,django-admin,Django,Django Admin,我正在使用Django 1.4。我想在管理员页面中添加一个队列,它看起来应该像管理员更改列表页面。我尝试了这么多的博客和其他论坛,但没有得到我想要的。如何在具有以下功能的管理页面中添加自定义视图 我自己的queryset 应该看起来像管理员变更列表页面,所有功能都可用 models.py class Broker(models.Model): user = models.OneToOneField(User) agency = models.CharField(max_len

我正在使用Django 1.4。我想在管理员页面中添加一个队列,它看起来应该像管理员更改列表页面。我尝试了这么多的博客和其他论坛,但没有得到我想要的。如何在具有以下功能的管理页面中添加自定义视图

  • 我自己的queryset
  • 应该看起来像管理员变更列表页面,所有功能都可用
models.py

class Broker(models.Model):
    user = models.OneToOneField(User)
    agency = models.CharField(max_length=100)
url.py

    url(r'^admin/broker_list/$', 'room.admin_views.broker_list'),
    url(r'^admin/', include(admin.site.urls)), 
admin_views.py

def broker_list(request):
    return render_to_response(
        "admin/broker_list.html",
        {'broker_list' : Broker.objects.filter(user__is_active=False)},
        RequestContext(request, {}),
    )
broker_list = staff_member_required(broker_list)
broker_list.html

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

{% block title %}List of pending agent{% endblock %}

{% block content %}
    {{broker_list}}
{% endblock %}
通过上面的代码,我可以访问链接/admin/broker_list/查看查询集。但我不知道如何生成或扩展像管理员chagelist页面

即使我厌倦了Django ModelAdmin get_URL方法,但是声明我的_视图应该返回HttpResponse,所以它只呈现原始对象。作为参考,我在下面分享了我的代码

管理员

class ItemAdmin(admin.ModelAdmin):
    model = Broker
    def admin_list_broker(self, request):
        print "yes iam here"
        return HttpResponse("Hello!")
        #return HttpResponseRedirect(
        #        reverse("admin:account_agent_changelist",)
        #)
    def get_urls(self):
        from django.conf.urls.defaults import *
        urls = super(ItemAdmin, self).get_urls()
        my_urls = patterns('',
            url(
                r'broker_list',
                self.admin_site.admin_view(self.admin_list_broker),
                name='admin_list_broker',
            ),
        )
        print my_urls + urls
        return my_urls + urls

admin.site.register(Broker, ItemAdmin)
请帮助我实现上述任何一种方法的要求


谢谢。

我将通过扩展内置视图来解决这个问题,而不是创建一个自定义的管理员更改视图,django admin提供了许多挂钩来实现这一点,以下是我的想法:

  • 修改,但我建议不要这样做,因为您失去了编辑queryset未返回的对象的能力
  • 创建一个可以显示您的“代理列表”查询集-我建议使用此查询集,因为它将进一步为您提供一个GET url查询,您可以直接链接以激活此筛选器
  • 你甚至可以完全使用你自己的-这个选项我有最少的经验,不能评论 您还可以考虑改变外观,进一步定制外观和感觉,并提供定制的“动作”;我在过去成功地使用了这两种方法来提供特定于项目的功能

    非常令人兴奋的是,
    拥有更改权限
    拥有删除权限
    挂钩,再加上django guradian和自定义管理基础模板,可以让您将后端管理用作完整的前端管理


    一定要花时间通读整个模型管理页面——我越了解它,我发现自己编写定制前端管理的代码就越少

    如果希望在管理站点上显示自定义视图,可以使用“django admin plus” 它是一个库,允许您将自定义视图绑定到管理站点。您可以在该视图中使用您选择的查询和模型,并且可以继续,因为它是nt管理站点

    试着和我们分享你的反馈

    在将视图注册到admin.py后,它应该是这样的

    @admin.site.register_view('pathname')
    def my_view(request):
        do_something
    
    请与本图书馆分享您的经验

    祝你过得愉快