2013-06-19 36 views
1

我想在加一滴下拉菜单中的项目链接的所有记录导出为CSV,这是管理的代码:夹层管理菜单自定义链接

class EntrantAdmin(admin.ModelAdmin): 
list_display = ('__unicode__', 'email' , 'date_of_birth', 'postcode') 
readonly_fields = ('date_of_birth', 'answer') 
search_fields = ['email','first_name', 'last_name'] 

def get_urls(self): 
    urlpatterns = patterns('', 
     url(r'^export/$', self.admin_site.admin_view(self.export), 
      name='competition_entrant_export'), 
    ) 
    urlpatterns += super(EntrantAdmin, self).get_urls() 
    return urlpatterns 

def export(self, request, *args, **kwargs): 
    # Get all the field names from the Entrant model so we can export them 
    # in our csv file. We don't want the database primary key, though. 
    fields = map(attrgetter('name'), Entrant._meta.fields) 
    fields.remove('id') 

    # Construct a File-like object, in this case a Response, to write 
    # our csv data to. Also specify that it should be treated as an 
    # attachment (if not in debug mode). 
    stream = HttpResponse(mimetype='text/csv') 
    if not settings.DEBUG: 
     filename = 'competition.csv' 
     stream['Content-Disposition'] = 'attachment; filename=' + filename 

    writer = csv.DictWriter(stream, fields, dialect=quoteall) 
    try: 
     writer.writeheader() 
    except AttributeError: # Python < 2.7 
     writer.writerow(dict(zip(fields,fields))) 
    writer.writerows(Entrant.objects.values(*fields)) 

    return stream 
admin.site.register(Entrant, EntrantAdmin) 

和功能,如果你输入网址manualy工程“/管理员/竞争/入/出口”

如何dropdwon菜单链接添加新的菜单项与网址:/管理/竞争/入/出口

以貌似

I want that red menu item

如何解决这个问题呢?

回答

0

要回答你直接的问题,你可以一个custom item添加到具有您的网址为名为url那里的菜单。

ADMIN_MENU_ORDER = (
    ("Content", ("pages.Page", "blog.BlogPost", "blog.Comment", 
     ("Export Entrants", "competition_entrant_export"),)), 
    ("Site", ("auth.User", "auth.Group", "sites.Site", "redirects.Redirect")), 
) 

另一个简单的方法是使用django admin action。这将是一个黑客的一点点,因为你需要选择至少一个项目,以确保动作触发正确。但是,如果这是一名管理员它会很容易教育他们如何使用它。在操作,你会忽略这个查询集的参数。

相关问题