Импорт из excel работает через встроенный в django ImportExportModelAdmin, но не через созданное пользователем представление импорта

У меня есть файл excel с данными сотрудников... Поле названия подразделения в экселе связано с таблицей подразделений, которая является другой моделью.

Включил ForeignKeyWidget в resources.py для поиска единицы при импорте, и он работает со встроенным в django ImportExportModelAdmin.

При импорте через представление, созданное пользователем, возникает следующая ошибка.

[''Значение "A Unit" имеет неверный формат даты. Оно должно быть в формате YYYY-MM-DD.']

resources.py

from import_export import resources, fields
from import_export.widgets import ForeignKeyWidget
from sqlalchemy import column

from . models import *

class EmployeeResource(resources.ModelResource):
    id = fields.Field(attribute='id', column_name='id')
    EmpID = fields.Field(attribute='EmpID', column_name='EmpID')
    Name = fields.Field(attribute='Name', column_name='Name')
    DOB = fields.Field(attribute='DOB', column_name='DOB')
    PresentUnit = fields.Field(attribute='PresentUnit', column_name='PresentUnit', widget=ForeignKeyWidget(Unit, 'UnitName'))
    PostInDate = fields.Field(attribute='PostInDate', column_name='PostInDate')
 
    class Meta:
        model = Employee

views.py

@login_required(login_url='accounts:login')
def upload_employee_view(request):

    if request.method == "POST":
        file = request.FILES['employeefile']
        dataset = Dataset()

        if not file.name.endswith('xlsx'):
            messages.info(request, "Incorrect File Format, Upload aborted")
            return render(request, 'employee/uploademployee.html')

        employee_data = dataset.load(file.read(), format='xlsx')
        for employee in employee_data:
            value = Employee(
                employee[0],
                employee[1],
                employee[2],
                employee[3],
                employee[4],
                employee[5],         
            )
            value.save()

    return render(request, 'employee/uploademployee.html')

Кроме того, существует ли способ, при котором, если сотрудник уже существует с заданным EmpID, запись о данном сотруднике будет обновлена, а не будет создана новая запись.

А также любой способ избежать принудительного включения столбца id в лист excel, который должен быть загружен

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