Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao salvar os dados usando o Shell

Diferente dos colegas, meu problema foi ao salvar

>>> from perfis.models import Perfil
>>> perfil = Perfil('Osvaldo','osvaldo@osvaldo.com','n\a','Alura')
>>> perfil.save()

perfil.save() Traceback (most recent call last): File "", line 1, in File "C:\Python27\lib\site-packages\django\db\models\base.py", line 589, in save force_update=force_update, update_fields=update_fields) File "C:\Python27\lib\site-packages\django\db\models\base.py", line 617, in save_base updated = self.savetable(raw, cls, force_insert, force_update, using, update_fields) File "C:\Python27\lib\site-packages\django\db\models\base.py", line 679, in savetable forced_update) File "C:\Python27\lib\site-packages\django\db\models\base.py", line 709, in doupdate filtered = base_qs.filter(pk=pk_val) File "C:\Python27\lib\site-packages\django\db\models\query.py", line 691, in filter return self.filteror_exclude(False, args, **kwargs) File "C:\Python27\lib\site-packages\django\db\models\query.py", line 709, in filteror_exclude clone.query.add_q(Q(args, **kwargs)) File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1331, in add_q clause, require_inner = self.addq(where_part, self.used_aliases) File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1358, in addq current_negated=current_negated, connector=connector) File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1230, in build_filter condition = self.build_lookup(lookups, col, value) File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1138, in build_lookup return final_lookup(lhs, rhs) File "C:\Python27\lib\site-packages\django\db\models\lookups.py", line 82, in init self.rhs = self.get_prep_lookup() File "C:\Python27\lib\site-packages\django\db\models\lookups.py", line 85, in get_prep_lookup return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs) File "C:\Python27\lib\site-packages\django\db\models\fields_init__.py", line 646, in getprep_lookup return self.get_prep_value(value) File "C:\Python27\lib\site-packages\django\db\models\fields_init__.py", line 915, in getprep_value return int(value) ValueError: invalid literal for int() with base 10: 'Osvaldo'

Pelo que entendi, o problema está na tabela que gerou um campo ID que é do tipo int e está tentando gravar o nome nesse campo, pois quando pego os dados dos outros campos, vejo que estão todos "bagunçados"

>>> perfil.id
'Osvaldo'
>>> perfil.nome
'osvaldo@osvaldo.com'
>>> perfil.email
'n\x07'
>>> perfil.telefone
'Alura'
>>> perfil.nome_empresa
u''

Arquivo -> models.py

from django.db import models

class Perfil(models.Model):
    nome = models.CharField(max_length=255,null=False)
    email = models.CharField(max_length=255,null=False)
    telefone = models.CharField(max_length=15,null=False)
    nome_empresa = models.CharField(max_length=255,null=False)

Arquivo -> 0001_initial.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Perfil',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('nome', models.CharField(max_length=255)),
                ('email', models.CharField(max_length=255)),
                ('telefone', models.CharField(max_length=15)),
                ('nome_empresa', models.CharField(max_length=255)),
            ],
            options={
            },
            bases=(models.Model,),
        ),
    ]

Mesmo o campo do 'id' sendo auto incremento, aparentemente o erro está nesse ponto, alguém tem uma luz?

1 resposta
solução!

Já descobri o problema, ao "popular" o perfil, eu não usei os nomes nos campo

Como fiz: perfil = Perfil('Osvaldo','osvaldo@osvaldo.com','n\a','Alura')

Correto: perfil = Perfil(nome='Osvaldo', email='osvaldo@osvaldo.com', telefone='n\a', nome_empresa='Alura')

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software