2013-06-19 65 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。這將是一個黑客的一點點,因爲你需要選擇至少一個項目,以確保動作觸發正確。但是,如果這是一名管理員它會很容易教育他們如何使用它。在操作,你會忽略這個查詢集的參數。

相關問題