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?