Skip to content

Commit 73d51a5

Browse files
committed
Use dotted path when declaring serializers
1 parent fc52dc4 commit 73d51a5

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

example/views.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
import rest_framework_json_api.renderers
88
from rest_framework_json_api.pagination import PageNumberPagination
99
from rest_framework_json_api.utils import format_drf_errors
10-
from rest_framework_json_api.views import ModelViewSet, RelatedMixin, RelationshipView
10+
from rest_framework_json_api.views import ModelViewSet, RelationshipView
1111

1212
from example.models import Author, Blog, Comment, Company, Entry, Project
1313
from example.serializers import (
14-
AuthorBioSerializer,
1514
AuthorSerializer,
1615
BlogSerializer,
1716
CommentSerializer,
@@ -93,12 +92,12 @@ class NonPaginatedEntryViewSet(EntryViewSet):
9392
pagination_class = NoPagination
9493

9594

96-
class AuthorViewSet(RelatedMixin, ModelViewSet):
95+
class AuthorViewSet(ModelViewSet):
9796
queryset = Author.objects.all()
9897
serializer_class = AuthorSerializer
9998
related_serializers = {
100-
'bio': AuthorBioSerializer,
101-
'entries': EntrySerializer
99+
'bio': 'example.serializers.AuthorBioSerializer',
100+
'entries': 'example.serializers.EntrySerializer'
102101
}
103102

104103

rest_framework_json_api/views.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from django.db.models.manager import Manager
1212
from django.db.models.query import QuerySet
1313
from django.urls import NoReverseMatch
14+
from django.utils.module_loading import import_string as import_class_from_dotted_path
1415
from rest_framework import generics, viewsets
1516
from rest_framework.exceptions import MethodNotAllowed, NotFound
1617
from rest_framework.response import Response
@@ -129,10 +130,10 @@ def retrieve_related(self, request, *args, **kwargs):
129130
def get_serializer_class(self):
130131
if 'related_field' in self.kwargs:
131132
field_name = self.get_related_field_name()
132-
_class = self.related_serializers.get(field_name, None)
133-
if _class is None:
133+
class_str = self.related_serializers.get(field_name, None)
134+
if class_str is None:
134135
raise NotFound
135-
return _class
136+
return import_class_from_dotted_path(class_str)
136137
return super(RelatedMixin, self).get_serializer_class()
137138

138139
def get_related_field_name(self):

0 commit comments

Comments
 (0)