首页 > 解决方案 > 如何使用 django 将数据导入数据库

问题描述

我正在尝试使用 Django 将数据从 excel 表导入数据库,但它不起作用。

excel文件由2列标题组成。

id -
name

错误行号:1 - 'id' 无,测试 Traceback(最近一次调用最后):文件“C:\Users\LTGM~1\Desktop\TESTFO~1\testanal\lib\site-packages\import_export\resources.py ",第 492 行,在 import_row 实例中,new = self.get_or_init_instance(instance_loader, row) 文件 "C:\Users\LTGM~1\Desktop\TESTFO~1\testanal\lib\site-packages\import_export\resources.py" ,第 269 行,在 get_or_init_instance instance = self.get_instance(instance_loader, row) 文件“C:\Users\LTGM~1\Desktop\TESTFO~1\testanal\lib\site-packages\import_export\resources.py”中,第 263 行,在 get_instance 返回 instance_loader.get_instance(row) 文件“C:\Users\LTGM~1\Desktop\TESTFO~1\testanal\lib\site-packages\import_export\instance_loaders.py”,第 31 行,在 get_instance field = self .resource.fields[key] KeyError: 'id'

我试过这个import_export模块。

  1. 在 models.py 中创建类
  2. 在 resources.py 中创建资源
  3. 在 admin.py 中创建管理员
  4. 在 views.py 中创建函数

模型.py

from django.db import models

# Create your models here.
class criminal_type(models.Model):
    criminal_typeID = models.AutoField(primary_key=True)
    name = models.CharField(max_length=10)

    def __str__(self):
        return str(self.name)

资源.py

from import_export import resources
from .models import criminal_type
# from .models import Mouhafazat


class criminal_type_resource(resources.ModelResource):
    class Meta:
        model = criminal_type

管理员.py

from import_export.admin import ImportExportModelAdmin
from django.contrib import admin
from .models import criminal_type

@admin.register(criminal_type)
class CriminalTypeAdmin(ImportExportModelAdmin):
    pass

视图.py

from django.shortcuts import render
from tablib import Dataset


# Create your views here.

def simple_uploadCriminalType(request):
    if request.method == 'POST':
        criminalType = criminal_type_resource()
        dataset = Dataset()
        newCriminalType = request.FILES['myfile']

        imported_data = dataset.load(newCriminalType.read(),format="xlsx")
        result = criminalType.import_data(dataset, dry_run=True)  # Test the data import

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

    return render(request, 'core/simple_upload.html')

标签: djangodatabase

解决方案


推荐阅读