Skip to content

Commit d61a150

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

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

example/views.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
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,
@@ -97,8 +96,8 @@ class AuthorViewSet(RelatedMixin, 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)