@NeedSomeBackup

Как сделать пробелы невидимыми при экспорте CSV в Django?

Цель - выгрузить 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: Теорию сижу читаю, учусь)
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Настроить csv reader нормально надо, а не пробелы мучать (если у вас вообще csv принципиально читабельный).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы