Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Método filter

O método filter me devolve todos os objetos que possuem as características que eu passei como parâmetro, certo? Então ele deve devolver uma lista? Como imprimir essa lista?

6 respostas

Normalmente como em Python. Ex:

perfis = Perfil.objects.filter(nome__contains='a')

for perfil in perfis:
       print perfil.nome

Não deu certo.

>>> from perfis.models import Perfil
>>> f = Perfil(nome='Pedro', email='pedro@bib.com.br', telefone='n/a', nome_empresa='GR SA')
>>> g = Perfil(nome='Tiago', email='tiago@bib.com.br', telefone='n/a', nome_empresa='GR SA')
>>> h = Perfil(nome='Joao', email='joao@bib.com.br', telefone='n/a', nome_empresa='GR SA')
>>> i = Perfil(nome='Lucas', email='lucas@pip.com.br', telefone='n/a', nome_empresa='AF SA')
>>> perfis = Perfil.objects.filter(email__icontains='bib')
>>> for perfil in perfis:
...     print perfis.nome
...
>>>
>>>

Oi Geovane, duas observações no contains tu colocou um i

perfis = Perfil.objects.filter(email__contains='bib')

e no for tu precisa pedir o nome de cada perfil que tu ta passando então fica

print perfil.nome

Desculpe, Vânia, mas não.

O "i" que coloquei é para considerar maiúscula ou minúscula. E "perfil' do meu for é apenas o iterador, ele não contém nada. A variável que recebe recebe alguma coisa é "perfis", portanto, acredito que está correto. Não?

solução!

Certo, Geovane não conhecia o i. Ele explica no exercício. N parte do for o que acontece é o seguinte perfis é sua lista com todos os perfis que contem bib no email.

for perfil in perfis:
...     print perfil.nome

então no for pra cada perfil que existe na minha lista de perfis eu quero o nome do perfil. esse perfil é a referencia da tua lista. testa aí: aqui deu certo

>>> from perfis.models import Perfil
>>> perfis = Perfil.objects.filter(email__icontains='com')
>>> for perfil in perfis:
...     print perfil.nome
... 
Oswaldo
Steve
Flávio Almeida
Romulo Henrique

Certíssima! Obrigado.