django1.8- come aggiungere manualmente le informazioni durante il caricamento di Excel e l'inserimento nel database
L'Excel è come l'immagine di sinistra con 3 colonne.
Quando si inserisce nel database, è necessario aggiungere 2 colonne in modo più manuale come mostrato nell'immagine a destra e inserire complessivamente 5 colonne nel database. Queste 2 ulteriori informazioni sulle colonne sono recuperate da altri database.
E un'altra funzione è se c'è già file esistente, il file appena caricato sovrascriverà quella esistente. [Frammenti in views.py sotto]
Ho già provato due 3 strumenti di terze parti, ma non funziona, in modo da forse è ancora meglio usare solo quello incorporato nel django.
Versione: Python 2.7. Excel 2013. Django1.8.
Qualsiasi aiuto è molto apprezzato. La speranza potrebbe fornire il frammento di dettaglio per come aggiungere questi 2 colonne:
uploader = request.session['uploader']
Date=request.session['date']
forms.py
from django.core.files.storage import FileSystemStorage
from financialdata.storage import OverwriteStorage
class XXXXDataForm(forms.Form):
XXXXfile=forms.FileField(label='Select a file')
views.py
from django.core.files.storage import FileSystemStorage
def import_data(request):
if request.method == "POST":
form = XXXXForm(request.POST,request.FILES)
if form.is_valid():
newdoc= XXXX(docfile=request.FILES['docfile'])
newdoc.save()
return HttpResponseRedirect(reverse('homepage'))
else:
return HttpResponseBadRequest()
else:
form = XXXXForm()
return render_to_response(
'dataentry.html',
{
'form': form,
'title': 'Import excel data into database example',
'header': 'Please upload XXXX.xlsx:',
'message': 'File Saved!'
},
context_instance=RequestContext(request))
<!--How can I embed the following part to previous part?-->
class OverwriteStorage(FileSystemStorage):
def _save(self, name, content):
if self.exists(name):
self.delete(name)
return super(OverwriteStorage, self)._save(name, content)
def get_available_name(self, name):
return name
tu non chiamare la funzione di eliminazione – maazza
@maazza, la prego di incollare il codice corretto di seguito? Grazie. –
Come ha detto @maazza, hai creato la tua funzione, ma non la chiami. Da qualche parte nel codice dovresti chiamarlo in modo che funzioni .. – qasimalbaqali