Импорт из 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, который должен быть загружен