Цель - выгрузить csv файл в django models.
Есть CSV файл с 7 столбиками. И у модели есть 6 значений.
ФИО, номер квартиры, право собственности, доля, размер и кадастровый номер
Еще 1 столбик - это ID, который не вывожу.
models.py
from django.db import models
# Create your models here.
class Citizen(models.Model):
name = models.CharField(max_length = 500)
flat = models.CharField(max_length = 15)
size = models.CharField(max_length = 30)
share = models.CharField(max_length = 30)
doc = models.CharField(max_length = 300)
kadastr = models.CharField(max_length = 300)
def __str__(self):
return self.name
Пример:
name: Иванов Иван Петрович
flat: 15
size: 50m2
share: 2/3
doc: Долевая собственность № 11:11:11313013:192-77/111/2018-2 от 16.23.2014.доля в праве 2/3
kadastr: 66:66:6666011:111
Когда импортирую CSV в Django, то возникает проблема, что пробелы в name и doc импортируются как разные значения.
Например если в ФИО должно попасть Иванов Иван Петрович, то выгружается вот так:
name: Иванов
flat: Иван
size: Петрович
Если написать в CSV ИвановИванПетрович (слитно), то все ок и попадает в name.
views.py
from django.shortcuts import render
from .forms import CsvModelForm
from .models import Csv
import csv
from citizens.models import Citizen
# Create your views here.
def upload_file_view(request):
form = CsvModelForm(request.POST or None, request.FILES or None)
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.replace(" ", "")
row = row.split()
name = row[1]
flat = row[2]
size = row[3]
share = row[4]
doc = row[5]
kadastr = row[6]
Citizen.objects.create(
name = str(name),
flat = str(flat),
size = str(size),
share = str(share),
doc = str(doc),
kadastr = str(kadastr),
)
#print(row)
#print(type(row))
obj.activated = True
obj.save()
return render(request, 'csvs/upload.html', {'form':form})
forms.py
from django import forms
from .models import Csv
class CsvModelForm(forms.ModelForm):
class Meta:
model = Csv
fields = ('file_name',)
Подскажите пожалуйста, что я делаю не так?:(
Спасибо!
PS: Теорию сижу читаю, учусь)