Запрос модели Django (получение категорий на основе постов)

Пожалуйста, мне нужна помощь с запросом модели django. Я работаю над приложением для блога, с моделью для постов и моделью для категорий. На странице категорий я хочу показать все мои категории, но с одним постом из каждой из этих категорий. например введите описание изображения здесь. Я хочу получить карточку с одним постом из каждой категории. Я пробовал запустить цикл, но я запутался. Пожалуйста, помогите 🙏🙏

введите здесь описание изображения. Я попробовал запустить цикл следующим образом, но он не приносит никаких результатов в шаблоне

Если Post может быть связан только с одним PostCategory, я рекомендую запросить модель Post и использовать distinct() для получения одного сообщения для каждой категории:

posts = Post.objects.distinct('category')

Если вы хотите упорядочить набор запросов по названию категории и выбрать самое новое сообщение в каждой категории, вы можете сделать что-то вроде (предполагая, что ваша модель Post имеет временную метку created или что-то подобное):

posts = Post.objects.distinct('category__name').order_by('category__name', '-created')

Если вы не хотите упорядочить результаты на странице по категориям, используйте sorted() для работы с набором запросов:

posts = sorted(Post.objects.distinct('category'), key=lambda p: p.created, reverse=True)

Вышеприведенный результат даст список (не набор запросов), с одним сообщением в каждой категории, отсортированный от самого нового до самого старого сообщения.

Вернуться на верх