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"
Вернуться на верх