Django-import-export: Import data from views.py

Created on 4 Jul 2018  路  4Comments  路  Source: django-import-export/django-import-export

I'm working on django-import-export library for importing & exporting xls format, Everything working probably at AdminModel,Now I'm trying to make importing working with views.py & templates but for some reasons didn't work with me

views.py

def simple_upload(request):
if request.method == 'POST':
    person_resource = resources.SimsResource()
    dataset = Dataset()
    new_persons = request.FILES['myfile']

    imported_data = dataset.load(new_persons.read())
    result = person_resource.import_data(dataset, dry_run=True)  # Test the data import

    if not result.has_errors():
        person_resource.import_data(dataset, dry_run=False)  # Actually import now

    return render(request, 'import_sims.html', {'errors': result.has_errors(), 'result': result})

return render(request, 'import_sims.html')

resources.py

class SimsResource(resources.ModelResource):
class Meta:
    model = models.Sim
    fields = ['s_serial_number', 's_number', 's_provider', 'status']
    import_id_fields = ['id']

forms.py

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

url.py

url(r'^importing_sims/$', views.simple_upload, name='Import'),

import_sims.html

    {% if errors %}
        errors:
        {{ errors }}
        <br><br><br>
        resluts :
        {{ result }}
    {% endif %}

      <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="myfile">
        <button type="submit">Upload</button>
      </form>

and error output :

errors: True 
resluts : <import_export.results.Result object at 0x1072b75f8>
question solution included stale

Most helpful comment

Solved !

For example if your id column it's autonumber you can do this in your resources class.

`class BookResource(ModelResource):

class Meta:
    model = Book
    skip_unchanged = True
    report_skipped = False         
    fields = ('id','title', 'publication_date', 'author', 'price', 'pages', 'book_type',) 
def before_import_row(self, row, **kwargs):        
    row['id'] = None`

Regards !

All 4 comments

more information :

ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
ERROR:root:'id'
Traceback (most recent call last):
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 453, in import_row
    instance, new = self.get_or_init_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 267, in get_or_init_instance
    instance = self.get_instance(instance_loader, row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/resources.py", line 261, in get_instance
    return instance_loader.get_instance(row)
  File "/folder/env_app/lib/python3.6/site-packages/import_export/instance_loaders.py", line 31, in get_instance
    field = self.resource.fields[key]
KeyError: 'id'
imported_data :: s_serial_number|s_number|s_provider|status|id
---------------|--------|----------|------|--
4499223        |44992233|2         |3     |
4499224        |44992234|2         |1     |
4499225        |44992235|2         |2     |
4499226        |44992236|2         |1     |
4499227        |44992237|2         |3     |
4499228        |44992238|2         |1     |
4499229        |44992239|2         |1     |
4499230        |44992240|3         |3     |
4499231        |44992241|1         |1     |
4499232        |44992242|1         |2     |
4499233        |44992243|3         |2     |
4499234        |44992244|2         |1     |
4499235        |44992245|2         |3     |
4499236        |44992246|2         |1     |
[04/Jul/2018 07:41:28] "POST /importing_sims/ HTTP/1.1" 200 1357

I tried add fake IDs, remove column, but nothing work

Any help ?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Solved !

For example if your id column it's autonumber you can do this in your resources class.

`class BookResource(ModelResource):

class Meta:
    model = Book
    skip_unchanged = True
    report_skipped = False         
    fields = ('id','title', 'publication_date', 'author', 'price', 'pages', 'book_type',) 
def before_import_row(self, row, **kwargs):        
    row['id'] = None`

Regards !

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bestofothers picture bestofothers  路  3Comments

klabedz picture klabedz  路  6Comments

s-y picture s-y  路  6Comments

mikejmets picture mikejmets  路  6Comments

PetrDlouhy picture PetrDlouhy  路  3Comments