CSV Import to Models

A snippet showing how to import CSV data into Django models.


# models.py
from django.db import models
class Product(models.Model):
    sku = models.CharField(max_length=30, unique=True)
    name = models.CharField(max_length=150)
  

# admin.py
from django.contrib import admin
from .models import Product
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ("sku","name")
  

import csv
from django.core.exceptions import ValidationError
from app.models import Product

def import_csv(path):
    objs = []
    with open(path, newline="") as f:
        for row in csv.DictReader(f):
            p = Product(sku=row["sku"], name=row["name"])
            try:
                p.full_clean()
            except ValidationError:
                continue
            objs.append(p)
    Product.objects.bulk_create(objs, ignore_conflicts=True)
  
Explanation:
  • Validate rows with full_clean() before saving.
  • Use bulk_create(..., ignore_conflicts=True) to skip duplicates.
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.