/ / Як я можу написати запит Django для зведення останнього опублікованого запису для кожного автору колективного блогу? - python, django, django-models, django-queryset

Як написати запит Django для агрегування останнього опублікованого запису для кожного автора колективного блогу? - python, django, django-models, django-queryset

Припустимо наступні спрощені моделі:

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)

З огляду на первинний ключ певного блогу, як би я отримав запит із записів, що queryset містить лише найостанніший запис кожного автора?

Відповіді:

1 для відповіді № 1

Знайшли тут відповідь:

Запит Django, який отримує найостанніші об'єкти з різних категорій

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 для відповіді № 2

Я спробую щось подібне:

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