1
models
TIPO_PESSOA = [
('PF', 'Pessoa Física'),
('PJ', 'Pessoa Jurídica'),
]
class Pessoa(models.Model):
nome_razao_social = models.CharField(max_length=255)
tipo_pessoa = models.CharField(max_length=2, choices=TIPO_PESSOA)
informacoes_adicionais = models.CharField(
max_length=1055, null=True, blank=True)
views
class ImportarPessoaView(CustomView):
permission_codename = ['add_pessoa', 'change_pessoa', 'view_pessoa']
def get_redirect_url(self):
return redirect(reverse_lazy('cadastro:listapessoasview'))
def post(self, request, *args, **kwargs):
if len(request.FILES):
try:
self.importar_csv(request)
except Exception as e:
messages.error(
request, 'O seguinte erro foi encontrado ao tentar ler o arquivo CSV: ' + str(e))
else:
messages.error(request, 'Arquivo CSV não selecionado.')
return self.get_redirect_url()
def importar_csv(self, request):
csv_file = request.FILES['file']
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=',', quotechar="|"):
_, created = Pessoa.objects.update_or_create(
nome_razao_social=column[0],
tipo_pessoa=column[1],
informacoes_adicionais=column[2]
)
template
<form id="form_importar_pessoa" action="{{importar_pessoa_url}}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-line">
<label>Arquivo XML</label>
<input class="form-control" id="file" name="file" type="file" required/>
</div>
<button type="submit" class="btn btn-primary" id="importar_pessoa_btn">IMPORTAR</button>
</form>
I’m trying to import a file .csv
to my base, but after inserting the file and clicking on submit
the page loads but with no effect, nothing is registered.
I’m trying with the following file . csv:
nome_razao_social,tipo_pessoa,informacoes_adicionais
Claudete,PF,Teste importação de planilha