Моя задача: загрузить файл CSV в Django модель, мой model.py указан ниже
from django.db import models
# Create your models here.
class Chart(models.Model):
date=models.DateTimeField(blank=True,null=True)
open=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
high=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
low=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
close=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
def __str__(self):
return self.str(date)
class NSEBHAV(models.Model):
symbol=models.CharField(max_length=20,null=True,blank=True)
series=models.CharField(max_length=2,null=True,blank=True)
open=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
high=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
low=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
close=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
last=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
prev_close=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
tottrdqty=models.IntegerField(null=True,blank=True)
tottrdval=models.DecimalField(max_digits=10,decimal_places=3,null=True,blank=True)
timestamp=models.DateTimeField(blank=True,null=True)
totaltrades=models.CharField(max_length=20,null=True,blank=True)
isin=models.CharField(max_length=20,null=True,blank=True)
def __str__(self):
return self.symbol
Мой файл view.py указан ниже
import csv,io
from django.shortcuts import render
from django.contrib import messages
from .models import NSEBHAV,Chart
# Create your views here.
def upload_nse(request):
template='upload.html'
data=NSEBHAV.objects.all()
prompt={
'order': 'Order of the CSV should be (symbol,series,open,high,low,close,last,prevclose,tottrdqty,tottrdval,timestamp,totaltrades,isin',
'profiles': data
}
if request.method=='GET':
return render(request,template,prompt)
csv_file=request.FILES['file']
print(csv_file)
# if not csv_file.name.endwith('.csv'):
# messages.error(request,'This is not csv file')
data_set=csv_file.read().encode('utf-8')
io_string=io.StringIO(data_set)
next(io_string)
for column in csv.reader(io_string,delimiter=',',quotechar="|"):
_, created = NSEBHAV.objects.update_or_create(
symbol=column[0],
series=column[1],
open=column[2],
high=column[3],
low=column[4],
close=column[5],
last=column[6],
prevclose=column[7],
tottrdqty=column[8],
tottrdval=column[9],
timestamp=column[10],
totaltrades=column[11],
isin=column[12]
)
context = {}
return render(request, template, context)
csv. Пример файла
скриншот ошибки
Мой html файл приведен ниже: спасибо заранее. Если я использую кодировать, это дает ту же ошибку, а также я хочу проверить тип загружаемого файла CSV или нет