Хорошо, давайте попробуем это снова ..
catsused = {}
posts = {}
postindex = 0
posts.add(Post.objects.order_by('date')[postindex])
catsused.add(Post.objects.order_by('date')[postindex].category
for each in range(1,5):
postindex = postindex + 1
post = Post.objects.order_by('date')[postindex]
while post.category in catsused:
postindex = postindex + 1
post = Post.objects.order_by('date')[postindex]
posts.add(post)
catsused.add(post.category)
posts ## Now contains your posts
Это кажется мне ужасным кодом, но я полагаю, что что-то близкое к этому подойдет. Вы хотите добавить некоторый код для обработки "postindex" с учетом количества постов в системе.