Skip to content

Instantly share code, notes, and snippets.

@arthurfurlan
Created November 23, 2012 17:08
Show Gist options
  • Select an option

  • Save arthurfurlan/4136498 to your computer and use it in GitHub Desktop.

Select an option

Save arthurfurlan/4136498 to your computer and use it in GitHub Desktop.
## voce estava usando o "verbose_name" da forma errada, vou colocar
## aqui da forma eu acredito que você deve estar querendo usar e
## qualquer coisa você me corrige :)
class News(models.Model):
## ... bla bla bla, campos desse model que não interessa
class NewsPhotos(models.Model):
## ... bla bla bla, campos desse model que não interessa
news = models.ForeignKey(News, verbose_name="photos") ## presta atenção nesse nome "photos"
## pegar as fotos a partir de uma notícia que você já pegou
news = get_object_or_404(News, pk=news_id)
for photo in news.photos.all(): ## esse nome "photos" é o nome que eu usei no "verbose_name"
print photo
## basicamente você não precisa pegar a lista de fotos separado,
## você pode usar da mesma forma como eu mostrei acima
news_list = News.objects.all()
for news in news_list:
for photo in news.photos.all(): ## aqui ele vai rodar sempre um comando SQL para buscar a fotos
pass
## nesse caso de cima, se você tiver 30 notícias vai executar 30
## códigos 30 para buscar os 30 conjuntos de fotos... mas você
## pode otimizar isso dizendo para o django buscar as noticias *E*
## fotos das noticias tudo em único comando SQL, vocês faz isso
## assim:
news_list = News.objects.select_related('photos').all() ## esse nome é o mesmo do verbose_name
for news in news_list:
for photo in news.photos.all(): ## aqui ele vai NÃO vai precisar rodar outro comando SQL
pass
## nesse ultimo caso, você vai executar um único comando SQL que
## tem um JOIN e vai buscar todas as informações necessarias
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment