django1.8- jak dołączyć informację ręcznie podczas przesyłania Excel i wstawienie do bazy danych
Excel jest jak lewy obraz z 3 kolumnami.
Podczas wstawiania do bazy danych, muszę dodać ręcznie 2 kolumny bardziej ręcznie, jak pokazano na prawym obrazku i wstawić łącznie 5 kolumn w bazie danych. Te 2 dodatkowe informacje o kolumnach są pobierane z innych baz danych.
I kolejna funkcja, jeśli nie jest już istniejącego pliku, nowo dodany plik zastąpi istniejący. [Fragmenty w views.py poniżej]
Próbowałem już dwa 3 narzędzi firm, ale nie działa, więc może jeszcze lepiej jest po prostu użyć tego osadzonego w django.
Wersja: Python 2.7. Excel 2013. Django1.8.
Każda pomoc jest bardzo ceniona. Nadzieja mogłoby dostarczyć szczegółowy fragment o jak dołączyć te 2 kolumny:
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
dont połączyć się funkcja usuwania – maazza
@maazza, mógłbyś wkleić poniżej swój poprawiony kod? dzięki. –
Jak powiedział @maazza, utworzyłeś swoją funkcję, ale nie wywołujesz jej. Gdzieś w kodzie powinieneś go nazwać, żeby działał .. – qasimalbaqali