Вы можете сделать это, проверив, что предыдущие / следующие сообщения существуют, и вернув результаты в контексте:
views.py
def render_post(request, id):
category_count = get_category_count()
most_recent = Post.objects.order_by('-timestamp')[:3]
post = get_object_or_404(Post, id=id)
next_post_id = int(id) + 1
previous_post_id = int(id) - 1
try:
previous_post_exists = Post.objects.filter(id=previous_post_id).exists()
except Post.DoesNotExist:
previous_post_exists = False
try:
next_post_exists = Post.objects.filter(id=next_post_id).exists()
except Post.DoesNotExist:
next_post_exists = False
context = {
'post': post,
'id': id,
'next_post_id': next_post_id,
'previous_post_id': previous_post_id,
'previous_post_exists': previous_post_exists,
'next_post_exists': next_post_exists,
'most_recent': most_recent,
'category_count': category_count,
}
return render(request, 'post.html', context)
Вы бы затем необходимо проверить эти значения в своем шаблоне:
html
<div id="button-wrapper">
{% if previous_post_exists %}
<button class="buttons" type="submit"><a href="/post/{{previous_post_id}}">Previous</a></button>
{% endif %}
{% if next_post_exists %}
<button class="buttons" type="submit"><a href="/post/{{next_post_id}}">Next</a></button>
{% endif %}
</div>