def post(self, request, *args, **kwargs):
"""
Custom post method
Either exports a CSV or displays a form with errors
:param request: Http Request instance
:type request: django.http.HttpRequest
:param args: Default positional args
:type args: ()
:param kwargs: Default keyword args
:type kwargs: {}
:return: Http Response instance
"""
queryset = kwargs.get('queryset')
generators = kwargs.get('generators')
if generators.count() == 1:
return self.render_csv_to_response(generators[0], queryset)
form = self.form_class(generators=generators)
if 'post' in request.POST:
form = self.form_class(data=request.POST, generators=generators)
if form.is_valid():
generator = form.cleaned_data.get('generator')
return self.render_csv_to_response(generator, queryset)
return self.render_to_response({
'title': 'Export to CSV',
'form': form,
'opts': queryset.model._meta,
'queryset': queryset,
'action_checkbox_name': admin.helpers.ACTION_CHECKBOX_NAME
})
评论列表
文章目录