Запрос модели 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)
Вышеприведенный результат даст список (не набор запросов), с одним сообщением в каждой категории, отсортированный от самого нового до самого старого сообщения.