Я создаю приложение django и пытаюсь загрузить файл csv, при загрузке сохраняется только 1 строка. Ниже приведены примеры данных.
CSV-файл:
first_name, last_name, email, phone, room
Juliet, Tolentino, julz@gmaial.com, 1234567, 13
Jiselle, Buena, jis@gmail.com, 45678899, 14
Модель:
class Teacher(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
email = models.CharField(max_length=50)
phone = models.CharField(max_length=20)
room = models.CharField(max_length=20)
photo = models.ImageField(upload_to='photos/%Y/%m/%d/', default='prof_avatar.jpg')
created = models.DateTimeField(auto_now_add=True)
Просмотры
def importteacher(request):
if request.method == 'GET':
return render(request, 'teachers/importteacher.html')
csv_file = request.FILES['file']
if not csv_file.name.endswith('.csv'):
return render(request, 'teachers/importteacher.html',
{'form': AuthenticationForm(), 'error': 'The file is not a CSV format'})
data_set = csv_file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
for column in csv.reader(io_string, delimiter=','):
_, created = Teacher.objects.update_or_create(
first_name=column[0],
last_name=column[1],
email=column[2],
phone=column[3],
room=column[4]
)
context = {}
return render(request, 'teachers/importteacher.html', context)
Форма
<form method="POST" ENCTYPE="multipart/form-data">
{% csrf_token %}
<div class="row justify-content-center mt-5">
<div class="col-md-5">
<h2>Import Teacher</h2>
<input class="btn btn-primary" type="file" name="file">
<p>ONLY accepts csv files</p>
<button type="submit" class="btn btn-primary">Upload</button>
</div>
</div>
</form>
Спасибо, оцените ваш ответ