• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

HecKel

[django] Ajuda com view

5 mensagens neste tópico

Boas pessoal!

Isto está complicado de entrar nos eixos com o django..., são terminologias totalmente novas para mim...

Ando a tentar fazer algo como isto:

Select id, name, parent, count(Select parent from tabela where parent=id) as contador from tabela where parent = 0

Mas nos views, ou seja, isto falando em SQL, precisaria de um view dentro de um view, agora como fazer isto?

Tenho isto assim:

def index(request):
    board_list = Board.objects.all().order_by('position').filter(parent_board=None)
    return render_to_response('forum/index.html', {'board_list': board_list})

O que se resume a apenas ao SQL:

Select * from tabela where parent_board=Null

Como raio consigo fazer e anexar o meu count a esta view?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço django, mas só para começar, o parent_board=None deve ser mais algo como parent_board=0 ou parent=0.

De qualquer maneira, uma olhadela rápida pela documentação do Django devolveu-me isto: http://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset

Vê se ajuda. :( Se não te safares, podes sempre usar isto: http://docs.djangoproject.com/en/dev/topics/db/sql/#topics-db-sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O parent_board=None está certo :( Isso vi no manual do django, o None é o "null", antes de tentar o null tentei null, Null e NULL :P Depois decidi ir ao manual e fiquei surpreendido :X

Sobre os aggregates é daí que tenho seguido, mas ainda não tinha encontrado o outro link :P Vou ver isso, apesar de ter a ideia que dá para fazer isso sem recorrer ao SQL...

Depois dou feedback.

thanks :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

I did it :D

def index(request):
   board_list = Board.objects.all().order_by('position').annotate(pbc = Count('parent_board')).filter(parent_board=None)
   for b in board_list:
       b.pbc = len(Board.objects.all().filter(parent_board = b))
   return render_to_response('forum/index.html', {'board_list': board_list})

Isto para uma lista grande de quadros não vai ficar assim muito eficaz..., deve haver alguma forma mais simples de fazer isto, no entanto já faz o que eu quero :)

Se alguém souber uma forma mais eficiente de fazer isto, apite, sff :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O parent_board=None está certo :P Isso vi no manual do django, o None é o "null", antes de tentar o null tentei null, Null e NULL :P Depois decidi ir ao manual e fiquei surpreendido :X

Apenas falei no 0 porque podias estar a usar 0 (número inteiro) para os quadro base. (e sim, eu sei o que é o None :))

Em relação a maneira mais eficiente, isso é um pouco difícil neste caso, sem conhecer o django é difícil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora