Вместо этого
for element in Element.objects.filter(contest = active_contest):
header_table.append(element.title)
Надо так:
header_table = Element.objects.filter(contest = active_contest).values_list('title', flat=True)
Совсем непонятный способ тут:
tmp_user.update({
'username': get_object_or_none(User, id = user.user.id).username
})
Когда можно так
tmp_user['username'] = user.user.username if user.user else None
Вместо этого
try:
tmp_user.update({
'last_date_find_element': Data.objects.filter(showing=2, useractive=user.id).order_by('-date_review')[:1].get().date_review
})
except:
tmp_user.update({
'last_date_find_element': None
})
Можно проще:
data_obj = Data.objects.filter(showing=2, useractive=user.id).order_by('-date_review').first()
tmp_user['last_date_find_element'] = data_obj.date_review if data_obj else None
В целом можно это все переписать на меньшее количество запросов, но неудобно писать в этот текстовое поле здесь. Да и до всего постепенно должны дойти сами, иначе это медвежья услуга может получиться))