Это сильно зависит от ваших моделей и от того, как CSV должен быть обработан перед сохранением.
В качестве примера я буду использовать эту модель:
# students/models.py
from django.db import models
class Student(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
grade = models.IntegerField()
def __str__(self):
return f"{self.first_name} {self.last_name} (grade={self.grade})"
Чтобы импортировать CSV, мы можем использовать модуль csv
из stdlib .
# students/data_import.py
import csv
from students.models import Student
def load_csv_file(path):
with open(path) as file_obj:
reader = csv.reader(file_obj)
for row in reader:
Student.objects.create(
first_name=row[0],
last_name=row[1],
grade=int(row[2]),
)
Теперь мы можем проверить, импортировав правильно отформатированный csv:
# There are no products in the database to start
>>> Student.objects.count()
0
# Here's a csv with some example data:
>>> print(open("students.csv").read())
first_name,last_name,grade
John,Doe,5
Jane,Doe,8
>>> from students.data_import import load_csv_file
>>> load_csv_file("students.csv")
>>> Student.objects.count()
2
>>> Student.objects.values()
[
{"first_name": "John", "last_name": "Doe", "grade": 5},
{"first_name": "Jane", "last_name": "Doe", "grade": 8}
]