Action button to export questionnaire in csv form in Django web app causing 504
Ya so i created this action button on a django web app and when i tried to use it got this error {"code":504,"message":"upstream request timeout"} so i do agree that its a big DB, although it would have become a big DB in future , so how can i get rid of this error
here is my code
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"