Meus últimos posts

Apaixonado por programação criei este blog para compartilhar expêriencias com outros programadores, nele mostro dicas e soluções para resolver determinadas situações.
Exemplos de queries usadas no Django
Exemplos de queries usadas no Django

Como selecionar  informações na base de dados usando Django? Aqui vai alguns exemplos de queries de seleção usadas no Django para resolver determinadas situações.

Quem conhece as tradicionais queries padrão Structured Query Language (SQL) usado para  efetuar requisições na base de dados, perceberá que com o Django é muito simples poupando o programador de escrever queries longas. 

 

Criando a estrutura de blog simples antes de começar escrever as queries

# Model - Escrevendo os Modelos

 class Blog(models.Model):

    autor = models.CharField(max_length=120)
    slug = models.SlugField(unique=True)

    def __unicode__(self):
        return u'%s' % ( self.autor)
 class Post(models.Model):

    blog = models.ForeignKey(Blog)
    titulo = models.CharField(max_length=128)
    texto = models.TextField()
    criado = models.DateTimeField()
    modificado = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return u'%s'  % (self.titulo)

 

#Views - Escrevendo as queries 

Selecionar todos os posts 


 
 posts = Post.objects.all()

Selecionar todos os posts de um determinado autor

 posts = Post.objects.filter(autor_slug='slug-do-autor')

Seleciona dez posts de um determinado autor

 posts = Post.objects.filter(autor_slug='slug-do-autor')[:10]

Seleciona 5 posts com intervalo de 5 a 10 de um determinado autor

 posts = Post.objects.filter(autor_slug='slug-do-autor')[5:10]

Seleciona todos os posts diferentes de um determinado autor

 posts = Post.objects.exclude(autor_slug='slug-do-autor')

Seleciona posts de uma determinada data

 posts = Post.objects.filter(criado__year='2016')

Seleciona posts que começa com uma determinada palavra

 posts = Post.objects.filter(titulo__startswith='Python')

Seleciona posts que contem uma determinada palavra

 posts = Post.objects.filter(titulo__icontains='Python')

Seleciona posts e ordena por título

 posts = Post.objects.all().order_by('titulo')

Retorna posts com data maior 'gt' ou maior ou igual 'gte' (> >=)

 from datetime import datetime
 posts = Post.objects.filter(criado__gt=datetime.now())
 posts = Post.objects.filter(criado__gte=datetime.now())

 

Retorna posts com data menor 'lt' ou menor ou igual 'lte' (< <=)

 from datetime import datetime
 posts = Post.objects.filter(criado__lt=datetime.now())
 posts = Post.objects.filter(criado__lte=datetime.now())