Import . csv file with Python/Django

Asked

Viewed 357 times

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
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.