Skip to content Skip to sidebar Skip to footer

Basic Handling Of Unique Column Integrityerror With Django Orm

I have the following in my django model, which I am using with PostgresSql class Business(models.Model): location = models.CharField(max_length=200,default='') name = model

Solution 1:

The simplest approach is to simply catch and ignore the IntegrityError:

for b in bs: 
    try:
        p = Business(**b)
        p.save()
    except IntegrityError:
        pass

You have to be cautious if you're using transactions, though. See the warning here:

After such an error, the transaction is broken and Django will perform a rollback at the end of the atomic block. If you attempt to run database queries before the rollback happens, Django will raise a TransactionManagementError.

So if you're using transactions you need to wrap each iteration in its own atomic() block:

for b in bs: 
    try:
        with transaction.atomic():
            p = Business(**b)
            p.save()
    except IntegrityError:
        pass

Post a Comment for "Basic Handling Of Unique Column Integrityerror With Django Orm"