diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index dd449bb13..d8fc02ea9 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -82,6 +82,7 @@ jobs: expressions_case defer defer_regress + force_insert_update from_db_value generic_relations generic_relations_regress diff --git a/django_mongodb/query.py b/django_mongodb/query.py index df2d0d19c..4c8b4639d 100644 --- a/django_mongodb/query.py +++ b/django_mongodb/query.py @@ -9,7 +9,7 @@ from django.db.models.sql.constants import INNER from django.db.models.sql.datastructures import Join from django.db.models.sql.where import AND, OR, XOR, ExtraWhere, NothingNode, WhereNode -from pymongo.errors import DuplicateKeyError, PyMongoError +from pymongo.errors import BulkWriteError, DuplicateKeyError, PyMongoError def wrap_database_errors(func): @@ -17,6 +17,10 @@ def wrap_database_errors(func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) + except BulkWriteError as e: + if "E11000 duplicate key error" in str(e): + raise IntegrityError from e + raise except DuplicateKeyError as e: raise IntegrityError from e except PyMongoError as e: