Django - Попытка упорядочить get_object_or_404 по последней версии

У меня есть коллекция записей блога с определенной категорией для каждой. На странице одной категории отображаются все посты в указанной категории, но я хотел бы, чтобы они сортировались по дате написания.

Вот что у меня есть:

def single_category(request, slug):
    category = get_object_or_404(Category, slug=slug)
    categories = Category.objects.all()
    context = {
        'category': category,
        'categories': categories
    }
    return render(request, 'Blog/single-category.html', context)

Это не работает, но вот что я хочу:

def single_category(request, slug):
    category = get_object_or_404(Category.objects.order_by('-written_on'), slug=slug)
    categories = Category.objects.all()
    context = {
        'category': category,
        'categories': categories
    }
    return render(request, 'Blog/single-category.html', context)

Вы можете получить связанные Post и упорядочить их в порядке убывания written_on:

def single_category(request, slug):
    category = get_object_or_404(Category, slug=slug)
    posts = Post.objects.filter(post_category=category).order_by('-written_on')
    categories = Category.objects.all()
    context = {
        'category': category,
        'categories': categories,
        'posts': posts
    }
    return render(request, 'Blog/single-category.html', context)

В шаблоне вы перечисляете posts, вместо category.post:

{% for post in posts %}
    …
{% endfor %}
Вернуться на верх