Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

263
Visualizações
Cómo revertir el filtro basado en la última entrada en Django

Tengo una tabla de clientes y una tabla de pedidos de clientes como se muestra a continuación.

 class Customer(models.Model): name = models.CharField() class CustomerOder(models.Model): customer = models.ForiengKey(Customer) item = models.CharField() datetime_of_purchase = models.DateField()

Ejemplo de entrada de la base de datos

Tabla: Cliente

 id name 1 A 2 B 3 C

Tabla: Pedido de cliente

 id customer item datetime_of_purchase 1 A item_3 2021-11-10 10:00:00 2 A item_2 2021-11-11 10:00:00 3 B item_1 2021-11-11 10:00:00 4 A item_1 2021-11-12 10:00:00 5 B item_2 2021-11-12 10:00:00 6 C item_1 2021-11-13 10:00:00

Supongamos que necesito filtrar el cliente cuya última compra es 'artículos_1', por lo que la muestra después del filtrado debería obtener solo el Cliente 'A' y 'C' cuya última compra es 'artículo_1'

 Sample: <QuerySet [<Customer: A>, <Customer: C>]>
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede obtener el último elemento adquirido con una expresión de Subquery [Django-doc] :

 from django.db.models import OuterRef, Subquery Customer.objects.alias( latest_purchase=Subquery( CustomerOrder.objects.filter( customer_id=OuterRef('pk') ).order_by('-datetime_of_purchase').values('item')[:1] ) ).filter( latest_purchase='item_1' )

Antes de django-3.2 , se usa .annotate(…) [Django-doc] sobre .alias(…) [Django-doc] :

 from django.db.models import OuterRef, Subquery Customer.objects.annotate( latest_purchase=Subquery( CustomerOrder.objects.filter( customer_id=OuterRef('pk') ).order_by('-datetime_of_purchase').values('item')[:1] ) ).filter( latest_purchase='item_1' )
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda