/ Como posso escrever uma consulta do Django para agregar a entrada publicada mais recentemente para cada autor de um blog coletivo? - python, django, django-models, django-queryset

Como posso escrever uma consulta do Django para agregar a entrada publicada mais recentemente para cada autor de um blog coletivo? - python, django, django-models, django-queryset

Suponha os seguintes modelos simplificados:

class Blog(models.Model):
name = models.CharField()

class Author(models.Model):
blog = models.ForeignKey("Blog", related_name="authors")

class Entry(models.Model):
author = models.ForeignKey("Author", related_name="entries")
published_on = models.DateTimeField(auto_now_add=True)

Dada a chave primária de um blog particular, como eu recuperaria um queryset de entradas de tal forma que o queryset contenha apenas a entrada mais recente de cada autor?

Respostas:

1 para resposta № 1

Encontrei a resposta aqui:

Consulta do Django que obtém os objetos mais recentes de diferentes categorias

authors = Author.objects.annotate(latest_entry_published_on=Max("entries__published_on"))
entries = Entry.objects.filter(published_on__in=[a.latest_entry_published_on for a in authors])

0 para resposta № 2

Eu tentaria algo como:

Entry.objects.order_by("-published_on").values_list("author_id").distinct()