Atualizado: 18/01/2024

Métodos latest, earliest, first e last - Django

Métodos latest e earliest

O método latest() (e sua versão assíncrona alatest()) retorna o registro com as alterações mais recentes em campos específicos.

O método earliest() (e sua versão assíncrona aearliest()) retorna o registro com as alterações mais antigas nos campos indicados.

Ambos os métodos aceitam como argumento um ou mais campos que determinam a base da ordenação e seleção do registro:

from .models import Person

# Seleciona o registro com as alterações mais recentes no campo "id"
latest_person = Person.objects.latest("id")
print(f"{latest_person.name} - {latest_person.age}")

# Seleciona o registro com as alterações mais antigas no campo "id"
earliest_person = Person.objects.earliest("id")
print(f"{earliest_person.name} - {earliest_person.age}")

É possível especificar múltiplos campos:

# Seleciona o registro com as alterações mais recentes no campo "age" 
# e as alterações mais antigas no campo "name"
latest_person = Person.objects.latest("age", "-name")
print(f"{latest_person.name} - {latest_person.age}")

Quando um campo é precedido por um sinal de menos, a ordem de busca é invertida. Assim, para o método latest, o registro com a alteração mais antiga será retornado, enquanto para o método earliest, o registro com a alteração mais recente será retornado.

Se nenhum registro for encontrado (por exemplo, em um conjunto vazio), ambos os métodos lançam a exceção DoesNotExist.

Métodos first e last

O método first() (e sua versão assíncrona afirst()) retorna o primeiro registro de um conjunto, enquanto o método last() (e sua versão assíncrona alast()) retorna o último registro.

from .models import Person

# Seleciona o primeiro registro do conjunto
first_person = Person.objects.first()
print(f"{first_person.name} - {first_person.age}")

# Seleciona o último registro do conjunto
last_person = Person.objects.last()
print(f"{last_person.name} - {last_person.age}")

# Seleciona o primeiro registro do conjunto ordenado por idade
first_person = Person.objects.order_by("age").first()
print(f"{first_person.name} - {first_person.age}")

Diferentemente dos métodos latest e earliest, first e last retornam None quando não há registros no conjunto.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com