Значения экспортированных строк csv в Django изменяются с помощью запятых

У меня есть сайт, на котором есть несколько радиокнопок, которые в зависимости от того, на какую из них вы нажимаете, загружают одну таблицу базы данных или другую. Я сделал представление на Django, а затем функцию Ajax на Javascript. По какой-то причине, когда я выбираю одну из радиокнопок и нажимаю кнопку загрузки, все значения в csv меняются на что-то вроде ",,,,,". Кто-нибудь знает, почему это происходит?

Мой views.py:

def download_db(request, mode):
#data = JSONParser().parse(request)
#serializer = WordsTableSerializer(data=data)

response = HttpResponse(content_type='text/csv')
writer = csv.writer(response)

if mode == 1:
    writer.writerow(['session_id', 'word1', 'word2', 
  'word3','distance_to_word12','distance_to_word13', 'distance_to_word23'])

    for word in WordDifferentTable.objects.all().values_list('session_id', 'word1', 'word2', 
    'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; 
 filename="WordsDifferent.csv"'
    return response
elif mode == 2:
    writer.writerow(['session_id', 'word1', 'word2', 'word3', 
 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])

    for word in 
LogicAnaloguiesTable.objects.all().values_list('session_id', 'word1', 
'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 
 'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; 
 filename="ForLogicAnalogies.csv"'
    return response

elif mode == 3:
    writer.writerow(['session_id', 'word1', 'word2', 'word3', 
  'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])

    for word in 
   SimilarWInContextTable.objects.all().values_list('session_id', 
   'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 
  'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; 
  filename="ForSimilarWordInContext.csv"'
    return response

elif mode == 0:
    writer.writerow(['session_id', 'word1', 'word2', 'word3'])

    for word in WordsTable.objects.all().values_list('session_id', 
   'word1', 'word2', 'word3'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; 
  filename="WordsTable.csv"'
    return response

return JsonResponse({}, status=304)

Функция Ajax:

    $( "#downloadbtn" ).click(function() {
    let mode = $( ".mode:checked" ).val() ? $( ".mode:checked" ).val() : 
   0;

    var word_form_data= {
        session_id: $("#session_id"),
        word1: $("#word1").val(),
        word2: $("#word2").val(),
        word3: $("#word3").val(),
    }

    $.ajax({
        headers: { "X-CSRFToken": csrf_token },
        url: './api/download/' + mode + "/",
        method: 'GET',
        //data: JSON.stringify(word_form_data),
    xhrFields: {
        responseType: 'blob'
    }, success: function (data) {
        var a = document.createElement('a');
        var url = window.URL.createObjectURL(data);
        a.href = url;
        switch(mode) {
            case('1'):
            a.download = 'WordDifferent.csv';
            break
            case('2'):
            a.download = 'LogicAnalogies.csv';
            break
            case('3'):
            a.download = 'SimilarWordInContext.csv';
            break
            case('4'):
            a.download = 'WordsTable.csv';
            break
            default:
            a.download = 'WordsTable.csv'
            break
            }
        document.body.append(a);
        a.click();
        a.remove();
        window.URL.revokeObjectURL(url);
    }
});
});

Пример того, как выглядит CSV: enter image description here

Заранее благодарю

Вернуться на верх