QuerySet n retona valor

276 views
Skip to first unread message

Tereza Godoi

unread,
Apr 27, 2016, 1:22:20 PM4/27/16
to Django Brasil
Boa Tarde,

Estou inciando no Django, e com problemas para retornar o resultado de um query, o banco esta populado e os registros aparecem no Django Admin normalmente, mas a query retorna somente o numero de registro e nao o conteudo do banco. tem 3 pessoas cadastradas, mas nao aparece os atributos de nome,cpf...

class Pessoa(models.Model):

executei a seguinte query:

>>> pessoas= Pessoa.objects.all()
>>> pessoas
>>> pessoas [<Pessoa: Pessoa object>, <Pessoa: Pessoa object>, <Pessoa: Pessoa object>] >>>

tambem tentei com o filter para trazer um resultado especifico, mas so sai isso...

>>> pessoas = Pessoa.objects.filter(pessoa_nome= 'Tereza')
>>> pessoas
[<Pessoa: Pessoa object>]

Alguem sabe oq pode ser de errado?

Luiz A. Menezes Filho

unread,
Apr 27, 2016, 1:30:45 PM4/27/16
to Django Brasil
Olá,

Sua query está correta. Todos os dados estão sendo retornados como deveria acontecer.

Quando você faz uma query pelo django (como Pessoa.objects.all()) é retornada uma lista de objetos do tipo Pessoa. Assim, para acessar seus dados, basta você acessar o atributo de um elemento dessa lista.

Para fazer isso use:
>>> pessoas[0]  # acessa um objeto do tipo pessoa do resultado da consulta
<Pessoa: Pessoa object>
>>> pessoas[0].cpf  # acessa o atributo cpf do objeto pessoa
'000.000.000-00'
>>> pessoas[0].nome
'Joãozinho'

Outra alternativa é utilizar o método values() que retorna uma lista de dicionários. Isso pode ser feito assim:
>> pessoas = Pessoa.objects.all().values()
>> pessoas
[{'nome': 'Joãozinho', 'cpf': '000.000.000-00', ...}, {'nome': 'Maria', ...}, ... ]

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Fred Chevitarese

unread,
Apr 27, 2016, 1:35:47 PM4/27/16
to django...@googlegroups.com
Pra você acessar os dados que quer, ou faz como o amigo falou, ou você itera no resultado: 

for p in pessoas: 
    print(p.nome)
    print(p.cpf)


E assim vai ;) 



"
São os homens que mais me surpreendem na humanidade. Porque perdem a saúde para juntar dinheiro, depois perdem dinheiro para recuperar a saúde. E por pensarem ansiosamente no futuro, esquecem do presente de tal forma que acabam por não viver nem o presente nem o futuro. E vivem como se nunca fossem morrer e morrem como se nunca tivessem vivido” - Dalai Lama.
"

Fred Chevitarese - GNU/Linux


Fred Chevitarese

unread,
Apr 27, 2016, 1:37:41 PM4/27/16
to django...@googlegroups.com
Recomendo você seguir o tutorial para entender melhor como usar o Django ;) 


Inté!



"
São os homens que mais me surpreendem na humanidade. Porque perdem a saúde para juntar dinheiro, depois perdem dinheiro para recuperar a saúde. E por pensarem ansiosamente no futuro, esquecem do presente de tal forma que acabam por não viver nem o presente nem o futuro. E vivem como se nunca fossem morrer e morrem como se nunca tivessem vivido” - Dalai Lama.
"

Fred Chevitarese - GNU/Linux



Reply all
Reply to author
Forward
0 new messages