Импорт файла csv с помощью django - Тип исключения: DatabaseError
Я пытаюсь создать проект django и мне нужно загрузить файл csv и создать объекты.
Я нашел видео: https://www.youtube.com/watch?v=t3BdM6JlAmY и https://simpleisbetterthancomplex.com/tutorial/2016/08/01/how-to-upload-files-with-django.html.
Мой код: sales/model.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Sales(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
date = models.CharField(max_length=10, blank=False, null= False)
product = models.CharField(max_length=10, blank=False, null= False)
def __str__(self):
return f"{self.user}"
sales/admin.py
from django.contrib import admin
from .models import Sales
admin.site.register(Sales)
В основном проекте, в настройках, я добавил эту часть о Media.
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('csvs.urls', namespace='csvs')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
csvs/models.py
from django.db import models
class Csv(models.Model):
file_name = models.FileField(upload_to='csvs')
uploaded = models.DateTimeField(auto_now_add = True)
activated = models.BooleanField(default= False)
def __str__(self):
return f"File id: {self.id}"
csvs/forms.py
from django import forms
from .models import Csv
class CsvModelForm(forms.ModelForm):
class Meta:
model = Csv
fields =('file_name',)
и views.py
from django.shortcuts import render
from .forms import CsvModelForm
from .models import Csv
import csv
from django.contrib.auth.models import User
from sales.models import Sales
def upload_file_view(request):
form = CsvModelForm(request.POST, request.FILES)
if form.is_valid():
form.save()
form = CsvModelForm()
obj= Csv.objects.get(activated=False)
with open(obj.file_name.path, 'r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i==0:
pass
else:
#row = "".join(row)
#row = row.replace(";"," ")
#row=row.split()
#print(row)
#print(type(row))
date = row[1]
user = User.objects.get(username=row[0])
Sales.objects.create(
date=date,
product= row[2],
user=user,
)
obj.activated=True
obj.save()
return render(request, 'upload.html', {
'form': form
})
Ошибка, которую я получаю после загрузки файла: "Exception Type: DatabaseError". Если я прокручу вниз, я увижу, что у меня есть исключение в этой строке.
Хочу отметить, что я работаю с mongodb. Если я пробую весь код для базы данных sqlite3, все хорошо и у меня нет никаких проблем.
Я попытался удалить все миграции и выполнить шаги с makemigrations, migrate, create superuser, но ничего не произошло
Спасибо за ваше время!