Django save_to_database () когда модель является временной таблицей? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть вид, где я позволяю пользователям загружать файлы xls, xlsx и csv. Мои пользователи будут загружать 3 типа данных каждый месяц, но сначала необходимо проверить их набор данных, поэтому я хочу сначала загрузить данные из файлов Excel во временные таблицы. Он работает очень хорошо, пока мне не нужно загружать данные из файлов Excel во временные таблицы.

Django Для метода save_to_database требуется модель, которой у меня нет для временных таблиц. Есть ли способ использовать save_to_database с временными таблицами? Его действительно легко использовать с различными форматами Excel.

В своем коде я передаю строку модели, я знаю, что она не будет работать, но я хотел показать, что именно мне нужно. Я использую SQL Сервер.

Мой взгляд:

def submission_upload(request):

    if request.method == "POST":
        form = uploadForm(request.POST, request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            submission_type = cd["submission_type"]
            #this should be done with session variables
            username = request.META["USERNAME"]
            currentUser = User()
            entity_id = re.search("[0-9]+",
                                  str(currentUser.get_entity_id(username))).group()
            #creating the tmp_table based on the given info
            cursor = connection.cursor()
            strTable = "[SCLR].[webtmp_" + entity_id + "_" + submission_type +"]"
            queryString = "IF OBJECT_ID('" + strTable + "') IS NOT NULL DROP TABLE " \
                        + strTable + "; " \
                        "CREATE TABLE " + strTable + " ( " \
                        "CID varchar(25), " \
                        "Product varchar(6), " \
                        "Account varchar(5), " \
                        "Amount int) "
            cursor.execute(queryString)
            cursor.close()
            request.FILES["file"].save_to_database(
                model=strTable,
                mapdict=["CID", "Product", "Account", "Amount"]
                )
            return render(request, "upload/upload-successful.html")
        else:
            return HttpResponseBadRequest
    else:
        form = uploadForm()
    return render(request, "upload/submission-upload.html",
            {"form": form})
...