将 CSV 文件导入 Django 模型的最简单方法是什么?

Moh*_*mad 2 csv django django-models django-forms

我正在 DJANGO 中制作一个应用程序来处理很多“问题”。模型中指定了一个问题表,或多或少会有数千个问题。

现在,我手头有一个 excel 文件,所有问题都在其中,我可以从那里制作一个 CSV 文件。我只需要在我的问题表中获取 CSV 数据。什么可能是最简单的方法来做到这一点?任何人都可以告诉任何工具,过程,代码这样做吗?

Wil*_*ing 9

一个Django的管理命令可能是导入此数据到数据库中的最佳选择。它使您可以访问 Django 的 ORM,同时与请求/响应周期分开。您可以使用 .csv 文件作为参数从命令行调用它。

这是一个简单的例子。

import csv
from django.core.management import BaseCommand
from app.models import Question

class Command(BaseCommand):
    help = 'Load a questions csv file into the database'

    def add_arguments(self, parser):
        parser.add_argument('--path', type=str)

    def handle(self, *args, **kwargs):
        path = kwargs['path']
        with open(path, 'rt') as f:
            reader = csv.reader(f, dialect='excel')
            for row in reader:
                Question.objects.create(
                    attr1=row[0],
                    attr2=row[1],
                )
            
Run Code Online (Sandbox Code Playgroud)

如果您将它保存为app/management/commands/load_questions.py您将其调用为:

python manage.py load_questions --path /path/to/your/file.csv
Run Code Online (Sandbox Code Playgroud)