2013-06-19 4 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) 

и функциональность работает при вводе URL-адрес Мануалов «/ админ/конкуренция/абитуриент/экспорт»

Как добавить новый пункт меню в dropdwon ссылки меню с URL:/администратор/конкурс/абитуриент/экспорт

взоров как

I want that red menu item

Как решить эту проблему?

ответ

0

Чтобы ответить на ваш прямой вопрос, вы можете добавить custom item в меню, в котором есть ваш url как именованный 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")), 
) 

Другой простой способ заключается в использовании Джанго admin action. Это будет крошечный бит взлома, так как вам нужно выбрать хотя бы один элемент, чтобы обеспечить правильное выполнение действий. Но если это администратор штата, было бы легко обучить их использованию. В действии вы просто проигнорируете параметр queryset.