Bug fix when use custom manager from BaseManager

This change fix a bug when a custom manager is created inheriting from `django.db.models.manager.BaseManager` instead of `django.db.models.Manager`. My manager was created as follow:

```python
from django.db.models import QuerySet
from django.db.models.manager import BaseManager

class ModelQuerySet(QuerySet):
    def custom_filter(self, *args, **kwargs):
        return # ...

class ModelManager(BaseManager.from_queryset(ModelQuerySet)):
    pass
```
This commit is contained in:
Cloves Oliveira 2020-01-06 01:04:43 -03:00 committed by GitHub
parent 165da5be0c
commit c728ba5a22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,7 +3,7 @@ from collections import OrderedDict
from urllib import parse from urllib import parse
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
from django.db.models import Manager from django.db.models.manager import BaseManager
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.urls import NoReverseMatch, Resolver404, get_script_prefix, resolve from django.urls import NoReverseMatch, Resolver404, get_script_prefix, resolve
from django.utils.encoding import smart_str, uri_to_iri from django.utils.encoding import smart_str, uri_to_iri
@ -154,7 +154,7 @@ class RelatedField(Field):
def get_queryset(self): def get_queryset(self):
queryset = self.queryset queryset = self.queryset
if isinstance(queryset, (QuerySet, Manager)): if isinstance(queryset, (QuerySet, BaseManager)):
# Ensure queryset is re-evaluated whenever used. # Ensure queryset is re-evaluated whenever used.
# Note that actually a `Manager` class may also be used as the # Note that actually a `Manager` class may also be used as the
# queryset argument. This occurs on ModelSerializer fields, # queryset argument. This occurs on ModelSerializer fields,