Skip to content

Commit 18796d5

Browse files
authored
Merge pull request #2589 from spoksss/master
Prevent override custom manager
2 parents 18ddee7 + ce0a074 commit 18796d5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

mongoengine/document.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,11 @@ def cascade_save(self, **kwargs):
583583
def _qs(self):
584584
"""Return the default queryset corresponding to this document."""
585585
if not hasattr(self, "__objects"):
586-
self.__objects = QuerySet(self.__class__, self._get_collection())
586+
queryset_class = self._meta.get("queryset_class")
587+
if queryset_class is not None:
588+
self.__objects = queryset_class(self.__class__, self._get_collection())
589+
else:
590+
self.__objects = QuerySet(self.__class__, self._get_collection())
587591
return self.__objects
588592

589593
@property

tests/queryset/test_queryset.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,6 +3914,33 @@ class Post(Document):
39143914

39153915
Post.drop_collection()
39163916

3917+
def test_custom_querysets_set_manager_methods(self):
3918+
"""Ensure that custom QuerySet classes methods may be used."""
3919+
3920+
class CustomQuerySet(QuerySet):
3921+
def delete(self, *args, **kwargs):
3922+
"""Example of method when one want to change default behaviour of it"""
3923+
return 0
3924+
3925+
class CustomQuerySetManager(QuerySetManager):
3926+
queryset_class = CustomQuerySet
3927+
3928+
class Post(Document):
3929+
objects = CustomQuerySetManager()
3930+
3931+
Post.drop_collection()
3932+
3933+
assert isinstance(Post.objects, CustomQuerySet)
3934+
assert not Post.objects.delete()
3935+
3936+
post = Post()
3937+
post.save()
3938+
assert Post.objects.count() == 1
3939+
post.delete()
3940+
assert Post.objects.count() == 1
3941+
3942+
Post.drop_collection()
3943+
39173944
def test_custom_querysets_managers_directly(self):
39183945
"""Ensure that custom QuerySet classes may be used."""
39193946

0 commit comments

Comments
 (0)