Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def thread_list(request, board_code):
- """Список тредов с последними 3 постами, отсортированный по последнему посту (не точно) """
- op_posts = Post.objects.filter(op=True, board__code=board_code)
- #это говно уже знаю как переписать, но это просто количество тредов
- num_threads = len(Post.objects.values("thread_id").annotate(Count("thread_id"))
- .filter(board__code=board_code).order_by())
- posts = []
- for a in range(num_threads):
- # тут получается в итоге список из оп постов, за которыми следует список из последних трёх постов этого треда
- posts.append(op_posts[a])
- posts.append(Post.objects.filter(op=False, board__code=board_code, thread_id=op_posts[a].thread_id)[:3:-1])
- final = []
- # убирает списки списков, засовывая все посты в один список
- for l in posts:
- if isinstance(l, list):
- for kek in l:
- final.append(kek)
- else:
- final.append(l)
- #создаю список списков по тредам, то есть внутренний список это оп пост и 3 последних поста в треде
- final_list = [final[x:x + 4] for x in range(0, len(final), 4)]
- f_sorted = []
- allp = Post.objects.filter(board__code='a')
- x = []
- for kek in allp:
- x.append(kek.id)
- last_post = Post.objects.filter(board__code=board_code, id=max(x)).get()
- for kek in final_list:
- #добавляю оп пост и 3 последних поста на первое место, если один из постов последний
- for a in kek:
- if a == last_post:
- f_sorted.append(kek)
- for kek in final_list:
- #добавляю все остальные, должно же работать?
- if kek not in f_sorted:
- f_sorted.append(kek)
- return render(request, 'board/thread_list.html', {'f_sorted': f_sorted})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement