O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na Internet
Sou novato no Django, ando estudando conforme tenho tempo e me deparei
com um problema que em PHP seria tão idiota de simples que no django
tá parecendo um monstro, hehe...
É o seguinte: tenho uma classe chamada "Tipo" e outra "Empresa". Eu
gostaria de exibir na página de Tipos, todas as empresas que estão
dentro daquele tipo...
Em termos de SQL, seria:
SELECT count(*) FROM empresas WHERE id_tipo = 1 ; (esse 1 no caso, é o
id do tipo do loping de listagem)
Eu tentei tanta coisa que nem sei mais oq tentar.... Acabei largando
por "gambiarra" isso:
# define quantidade de registros por tipo
def qtd_registros(self):
qtd = Empresa.objects
return qtd.count()
Só que nessa função aí, onde eu colocaria o "WHERE id_tipo =
tipo_do_looping"?
Não estou usando o newforms, to fazendo tudo no models por enquanto!
> Sou novato no Django, ando estudando conforme tenho tempo e me deparei > com um problema que em PHP seria tão idiota de simples que no django > tá parecendo um monstro, hehe...
> É o seguinte: tenho uma classe chamada "Tipo" e outra "Empresa". Eu > gostaria de exibir na página de Tipos, todas as empresas que estão > dentro daquele tipo...
> Em termos de SQL, seria: > SELECT count(*) FROM empresas WHERE id_tipo = 1 ; (esse 1 no caso, é o > id do tipo do loping de listagem)
> Eu tentei tanta coisa que nem sei mais oq tentar.... Acabei largando > por "gambiarra" isso:
> # define quantidade de registros por tipo > def qtd_registros(self): > qtd = Empresa.objects > return qtd.count()
> Só que nessa função aí, onde eu colocaria o "WHERE id_tipo = > tipo_do_looping"?
> Não estou usando o newforms, to fazendo tudo no models por enquanto!
João Vitor, ao aprender uma nova tecnologia, é sempre bom estar com
uma mente aberta. Se você ficar se prendendo a comparações com outras
linguagens, o próprio processo de aprendizado torna-se menos
prazeroso. Tente ver algo novo como "algo novo"! Quando vc se sentir
seguro com aquilo que aprendeu, aí sim é uma boa começar a comparar.
Tipo, essa é só uma dica de aprendizado. Talvez vc nem precise, mas
fica aí a sugestão.
(um amigo meu que está saindo do php agora andou apresentando sintomas
parecidos rsrsrsrs)
On 2 maio, 15:29, "Marinho Brandao" <mari...@gmail.com> wrote:
> > Sou novato no Django, ando estudando conforme tenho tempo e me deparei
> > com um problema que em PHP seria tão idiota de simples que no django
> > tá parecendo um monstro, hehe...
> > É o seguinte: tenho uma classe chamada "Tipo" e outra "Empresa". Eu
> > gostaria de exibir na página de Tipos, todas as empresas que estão
> > dentro daquele tipo...
> > Em termos de SQL, seria:
> > SELECT count(*) FROM empresas WHERE id_tipo = 1 ; (esse 1 no caso, é o
> > id do tipo do loping de listagem)
> > Eu tentei tanta coisa que nem sei mais oq tentar.... Acabei largando
> > por "gambiarra" isso:
> > # define quantidade de registros por tipo
> > def qtd_registros(self):
> > qtd = Empresa.objects
> > return qtd.count()
> > Só que nessa função aí, onde eu colocaria o "WHERE id_tipo =
> > tipo_do_looping"?
> > Não estou usando o newforms, to fazendo tudo no models por enquanto!
Depois de ler teu post umas 30x e não entender, joguei o código lá e
funfou hahaha...daí comecei a entender (ou ao menos pensar que
entendi) o esquema... vc pode confirmar pra mim?
A classe2 possui uma foreign key da classe1, logo, posso chamar um
JOIN na classe1 apenas usando o método "classe2_set"? Esse "set" já
faz os vínculos devidos? Só fica faltando passar os parâmetros?
Realmente é um outro paradigma...havia programado algo bem básico em
orientação a objetos, mas nunca com frameworks, nunca indo até o
"fundo", então, tu deve imaginar como to tomando um coro desse python/
django hehe...
Brigadão pela força!
On May 2, 3:29 pm, "Marinho Brandao" <mari...@gmail.com> wrote:
> > Sou novato no Django, ando estudando conforme tenho tempo e me deparei
> > com um problema que em PHP seria tão idiota de simples que no django
> > tá parecendo um monstro, hehe...
> > É o seguinte: tenho uma classe chamada "Tipo" e outra "Empresa". Eu
> > gostaria de exibir na página de Tipos, todas as empresas que estão
> > dentro daquele tipo...
> > Em termos de SQL, seria:
> > SELECT count(*) FROM empresas WHERE id_tipo = 1 ; (esse 1 no caso, é o
> > id do tipo do loping de listagem)
> > Eu tentei tanta coisa que nem sei mais oq tentar.... Acabei largando
> > por "gambiarra" isso:
> > # define quantidade de registros por tipo
> > def qtd_registros(self):
> > qtd = Empresa.objects
> > return qtd.count()
> > Só que nessa função aí, onde eu colocaria o "WHERE id_tipo =
> > tipo_do_looping"?
> > Não estou usando o newforms, to fazendo tudo no models por enquanto!
> Realmente é um outro paradigma...havia programado algo bem básico em > orientação a objetos, mas nunca com frameworks, nunca indo até o > "fundo", então, tu deve imaginar como to tomando um coro desse python/ > django hehe...
É.. Acho que tu entendeu, mas vou re-explicar de uma maneira diferente, passo a passo para clarear um pouco mais. Vamos, lá:
Para selecionar todas as empresas utilizamos o método all:
>>> Empresa.objects.all()
Para filtrar as empresas pelo tipo é possível fazer isso através do método filter e passando o nome do campo + ___ + o nome do campo da ForeignKey ex:
>>> Empresa.object.filter(tipo__id=1)
Agora para retornar a quantidade de empresas é só utilizar o método count no final da query:
>>> Empresa.objects.filter(tipo__id=1).count()
Essa maneira que citei é uma das maneiras de se fazer isso. Outra maneira de objets a listagem das empresas é utilizar o set_empresas do model Tipo, como o Marinho tinha mostrado:
>>> Tipo.objects.filter(id=1).empresa_set
Ou seja, Tipo.objects.filter(id=1).empresa_set trás o mesmo retorno que Empresa.object.filter(tipo__id=1) ai você pode usar qualquer uma das duas maneiras dependendo do seu caso.
E para finalizar, para obter a contagem de empresas de um tipo através do model Tipo com o atributo empresa_set basta adicionarmos o método count: