Неправильный формат csv при использовании ImportExportModelAdmin
Я пытаюсь загрузить приведенный ниже файл csv, но он загружает только некоторые столбцы, а затем некоторые из этих значений оказываются пустыми. До этого я получал ошибку:
``` self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'```
который я исправил, воспользовавшись советом из здесь, в котором говорится, что django import-export использует "id" по умолчанию. Итак, создайте файл resources.py - где я объявляю настройки для импорта и экспорта. И в качестве исключения объявить "id", что я и сделал и выгрузка заработала.... НО это некорректно и просто неправильно.
Часть CSV
Customer ID,Customer Name,Latitude,Longitude,town,region,country
C00001,Valentino Solomon,57.13514,-2.11731,Aberdeen,Aberdeen City,Scotland
C00002,Luna Armstrong,57.13875,-2.09089,Aberdeen,Aberdeen City,Scotland
C00003,Jaylen Crane,57.101,-2.1106,Aberdeen,Aberdeen City,Scotland
C00004,Christopher Fritz,57.10801,-2.23776,Milltimber,Aberdeen City,Scotland
Модель клиента
class Customer(models.Model):
customer_id = models.CharField(primary_key=True, max_length=150)
customer_name = models.CharField(max_length=150)
longitude = models.FloatField(null=True)
latitude = models.FloatField(null=True)
town = models.CharField(max_length=150)
region = models.CharField(max_length=150)
country = models.CharField(max_length=150)
#Admin.py
from django.contrib import admin
from systemx.models import Customer, Demand, Product
from import_export.admin import ImportExportModelAdmin
from systemx.resources import *
class DataImportExportAdmin(ImportExportModelAdmin):
resource_class = PropertyAdminResource
list_display = ['customer_id', 'customer_name', 'longitude', 'town', 'region', 'country']
# class DataImportExportAdmin(ImportExportModelAdmin):
# list_display = ['customer_id', 'customer_name', 'longitude', 'town', 'region', 'country']
admin.site.register(Customer, DataImportExportAdmin)
Файл Resource.py:
from import_export import resources из .models import Customer
class PropertyAdminResource(resources.ModelResource):
class Meta:
model = Customer
exclude = ('id',)
import_id_fields = ('customer_id',)
Скриншот загруженного csv в панели администратора Django

Кто-нибудь видит, где я ошибаюсь?
Спасибо!
Ок, теперь понятно. Причина, по которой значения не заполняют столбцы, заключается в том, что в вашем CSV-файле имена столбцов содержат пробелы вместо знаков подчеркивания. У вас есть 2 варианта:
(Быстро и просто) Измените имена столбцов CSV, чтобы отразить имена атрибутов, определенные в вашей модели. Например,
Customer IDстанетcustomer_id, аCustomer Nameстанетcustomer_name.Вероятно, вы также захотите записать имена столбцов
LatitudeиLongitudeв нижнем регистре.(Требуется некоторый дополнительный код) Вручную определите имя столбца в вашем ресурсе, сопоставив атрибут модели со столбцом в CSV. Например:
from import_export.fields import Field class PropertyAdminResource(resources.ModelResource): customer_id = Field( attribute="customer_id", column_name="Customer ID", ) customer_name = Field( attribute="customer_name", column_name="Customer Name" ) class Meta: model = Customer fields = ( 'customer_id', 'customer_name', 'latitude', 'longitude', 'town', 'region', 'country', ) import_id_fields = ('customer_id',)