Кнопка действия для экспорта анкеты в формате csv в веб-приложении Django, вызывающая 504
Итак, я создал эту кнопку действия в веб-приложении django, и когда я попытался ее использовать, я получил эту ошибку {"код":504,"сообщение": "время ожидания восходящего запроса"}. итак, я согласен с тем, что это большая база данных, хотя в будущем она могла бы стать большой базой данных, так как я могу избавиться от этой ошибки
вот мой код
class UserQuestionnaireAdmin(admin.ModelAdmin):
readonly_fields = (
"user",
"questionnaire",
"token",
"completed_at",
"created_at",
"total_score"
)
inlines = [UserQuestionnaireAnswerInline]
actions = ['export_as_csv']
def export_as_csv(self, request, queryset):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="questionnaire_results.csv"'
writer = csv.writer(response)
# Header row
writer.writerow([
"User ID",
"User Name",
"Questionnaire",
"Question",
"Answer",
"Score",
"Completed At",
])
for uq in queryset:
answers = uq.answers.all()
# for those questionnaire which have populated rows
if answers.exists():
for answer in answers:
writer.writerow([
uq.user.id,
f"{uq.user.first_name} {uq.user.last_name}" if uq.user.first_name and uq.user.last_name else "",
uq.questionnaire.title if uq.questionnaire else "",
answer.question.text if answer.question else "",
answer.answer_option.text if answer.answer_option else "",
answer.answer_option.weight if answer.answer_option else "",
uq.completed_at if uq.completed_at else "",
])
else:
# Write empty row for the questionnaire
writer.writerow([
uq.user.id,
f"{uq.user.first_name} {uq.user.last_name}" if uq.user.first_name and uq.user.last_name else "",
uq.questionnaire.title if uq.questionnaire else "",
"", "", "", # no question/answer/score
uq.completed_at if uq.completed_at else "",
])
return response
export_as_csv.short_description = "Export questionnaire results as CSV"