All'interno di my view.py, ho due funzioni, una che elabora l'input da un modulo e genera un elenco filtrato e un altro che deve esportare questo elenco in CSV.Generazione di file CSV con Django (contenuto dinamico)
Ecco il ritorno del mio prima funzione:
return render_to_response('templateX.html',
{
'queryset': queryset,
'filter_form': filter_form,
'validated': validated,
},
context_instance = RequestContext(request)
)
Ecco la funzione di esportazione:
def export_to_csv(request):
# get the response object, this can be used as a stream.
response = HttpResponse(mimetype='text/csv')
# force download.
response['Content-Disposition'] = 'attachment;filename=export.csv'
# the csv writer
writer = csv.writer(response)
qs = request.session['queryset']
for cdr in qs:
writer.writerow([cdr['calldate'], cdr['src'], cdr['dst'], ])
return response
non sono sicuro di come ottenere il set di query dalla mia prima funzione, che contiene un elenco degli elementi che voglio nel mio CSV e lo uso nella mia funzione export_to_csv. Oppure sarebbe il modo migliore di combinare queste due funzioni e fare clic su una casella di controllo se desidera scaricare un file CSV. Qualsiasi aiuto sarebbe apprezzato.
Ho provato in questo modo, ma quando faccio clic sul mio pulsante "export", che va all'url: localhost: 8000/cdr/export_csv, perde tutte le richieste GET e di conseguenza non c'è elaborazione di queryset, quindi il mio Il file CSV è vuoto. Quindi, come può il mio pulsante "Esporta" inviare tutte le richieste come se clicchi sul mio pulsante "cerca"? – chiurox
Il pulsante Esporta deve 1) indirizzare l'URL di esportazione e includere i parametri di query oppure 2) essere parte di un modulo che ha i parametri di query, come campi nascosti se necessario. È difficile per me formulare una raccomandazione specifica poiché non sono completamente chiaro su come le tue pagine si relazionano tra loro. –
Sì, ho deciso di farlo nel modo che hai descritto come prima opzione. Ora 'i campi nascosti', è interessante, lo guarderò più tardi quando incontrerò una situazione simile. – chiurox