Python django导入导出:导入期间无法排除id字段:KeyError:u';id';
在Django-1.9.6上,Django-import-export-0.5 当我尝试上载没有“id”的CSV时,字段抛出此错误Python django导入导出:导入期间无法排除id字段:KeyError:u';id';,python,django,django-import-export,Python,Django,Django Import Export,在Django-1.9.6上,Django-import-export-0.5 当我尝试上载没有“id”的CSV时,字段抛出此错误 Line number: 1 - u'id' 13173474, Harry McDade, 10.harry.asas@asasasas.com Traceback (most recent call last): File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_ex
Line number: 1 - u'id'
13173474, Harry McDade, 10.harry.asas@asasasas.com
Traceback (most recent call last):
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 434, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 258, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/resources.py", line 252, in get_instance
return instance_loader.get_instance(row)
File "/Users/isanka/dev/venv/edxubase/lib/python2.7/site-packages/import_export/instance_loaders.py", line 31, in get_instance
field = self.resource.fields[key]
KeyError: u'id'
“django导入导出”似乎仍然使用默认的“id”。目前,在CSV文件的标题中包含一列“id”,但在resources.py中排除了导入
class edxUserResource(resources.ModelResource):
class Meta:
model = edxUser
skip_unchanged = True
report_skipped = True
exclude = ('id',)
import_id_fields = ('edx_id', 'edx_email', 'edx_name',)
#export_order = ('edx_id', 'edx_email')
id字段是一个自动递增字段,因此如果您要添加新记录(我相信这是最常见的情况),id字段应该在标题中(csv文件的第一行),其余行应该包含空id,如: 例如:
CSV File:
id, username,email,password
,ahmad,ahmad@all.com,secretum
,salafi,salafi@gmail.com,Passhdjdj
In the Resource file (py):
class JasResult(ImportExportModelAdmin):
resource_class = JasResource
skip_unchanged = True
report_skipped = True
exclude = ('id',)
import_id_fields = ('username','email','password')
这在大多数情况下都很好。我已经找到了在没有ID列的情况下导入的解决方案 这是代码,请看一看
if request.method == 'POST':
queryset = Client.objects.filter(company=company)
company = Company.objects.get(id=company)
person_resource = ClientResource()
dataset = Dataset()
new_persons = request.FILES['myfile']
imported_data = dataset.load(new_persons.read().decode('utf-8'), format='csv')
try:
for row in dataset:
client = Client()
client.company = company
client.title = row[0]
client.first_name = row[1]
client.last_name = row[2]
client.email = row[3]
client.position = row[4]
client.company_name = row[5]
client.vat_number = row[6]
client.website = row[7]
client.address = row[8]
client.city = row[9]
client.state = row[10]
client.zip = row[11]
client.country = row[12]
client.phone = row[13]
client.fax = row[14]
client.notes = row[15]
client.save()
except Client.DoesNotExist:
raise Http404("There is a Problem with The CSV")
return render(request, 'import.html')
我的资源是这样的
class ClientResource(resources.ModelResource):
company = fields.Field(
column_name='company',
attribute='company',
widget=ForeignKeyWidget(Company, 'name'))
class Meta:
model = Client
skip_unchanged = True
report_skipped = True
exclude = ('id', 'company', 'status', 'modified', 'created')
import_id_fields = ['email']
我们可以排除id,如果我们想感谢这真的有帮助:)