Импорт данных Excel в базу данных Django в родительском дочернем формате - PullRequest
0 голосов
/ 21 ноября 2019

Мое требование - сохранить данные Excel в DB django, используя импорт, который я мог бы сделать, используя приведенный ниже код. Но затем я хочу сохранить данные в отношениях один ко многим. то есть. Я хочу, чтобы уникальный ключ был сгенерирован и сохранен в модели Main_page и соответствовал тому, что мои загруженные данные из файла Excel должны иметь один и тот же первичный ключ в модели загрузки. Например,Если главная страница имеет идентификатор 1, то для полных загруженных данных в Excel я хочу, чтобы данные имели общий ключ. Какие изменения или любую ссылку я должен узнать или пройти. Я застрял с последних дней, но не повезло. Заранее спасибо

models.py

class Upload(models.Model):

    sheet_key = models.ForeignKey(Main_page)
    Student_Name = models.CharField(max_length=100)
    Total_Marks = models.IntegerField()
    Marks_Scored = models.IntegerField()

class Main_page(models.Model):
    sheet_key = models.AutoField(primary_key=True)
    date = models.DateField()

views.py

class UploadFileForm(forms.Form):
    file = forms.FileField()


def import_data(request):

    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        # Check if the form is valid
        if form.is_valid():


            request.FILES['file'].save_to_database(             # Save the file data to the database
                name_columns_by_row=1,
                model=Upload,
                mapdict=['Student_Name', 'Total_Marks', 'Marks_Scored', 'Status', 'Date', 'College_Name', 'Phone Number'])     # Columns to be mapped

            return HttpResponse("OK")

        else:       # If the form has errors show the error.
            return HttpResponseBadRequest()
    else:
        form = UploadFileForm()
    return render(request, 'upload_form.html', {'form': form})

forms.py

<body>
    <h1>{{header}}</h1>

    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}

    <form action="" enctype="multipart/form-data"  method="post">
        <table>
            {{ form.as_table }}
        </table>
        {% csrf_token %}
        <input type="submit" value="Submit">
    </form>
</body>

1 Ответ

0 голосов
/ 18 декабря 2019

Я смог решить то же самое, преобразовав его в CSV, а затем написав нижеприведенную функцию. (Я разделяю основную логику. Если вам нужна полная логика, дайте мне знать) views.py

                    with open('df.csv') as csvfile:         # Reading the CSV to the model DB
                        reader = csv.DictReader(csvfile)
                        for row in reader:
                            p = Upload(Student_Name=row['Student Name'], Total_Marks=row['Total Marks'], Marks_Scored=row['Marks Scored'],
                                       Status=row['Status'], PhoneNumber=row['Phone Number'], unique_id=row['unikey'], First_Round_Interviewer_Name=row['1st  Round Interviewer Name'], Second_Round_Interviewer_Name=row['2nd Round Interviewer Name'],
                                       Third_Round_Interviewer_Name=row['Third Round Interviewer Name '], Management_Round_Interviewer_Name=row['Management/HR Round Interviewer Name'], HR_Round_Interviewer_Name=row['HR Round '])
                            p.save()        # Saving each record of the file using instance of the Uplaod model

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...