Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ad3dd29

Browse files
slivercn2ygk
authored andcommitted
Allow overwriting of get_queryset() of related field (#415)
* Allow overwriting of get_queryset() of related field * Always use get_queryset to retrieve queryset This allows proper overwriting of derived classes.
1 parent f1e6e1d commit ad3dd29

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

‎docs/usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ class LineItemViewSet(viewsets.ModelViewSet):
373373
serializer_class = LineItemSerializer
374374

375375
def get_queryset(self):
376-
queryset = self.queryset
376+
queryset = super(LineItemViewSet, self).get_queryset()
377377

378378
# if this viewset is accessed via the 'order-lineitems-list' route,
379379
# it wll have been passed the `order_pk` kwarg and the queryset

‎example/tests/test_relations.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,13 @@ def test_invalid_resource_id_object(self):
129129
}
130130

131131

132+
class BlogResourceRelatedField(ResourceRelatedField):
133+
def get_queryset(self):
134+
return Blog.objects
135+
136+
132137
class BlogFKSerializer(serializers.Serializer):
133-
blog = ResourceRelatedField(queryset=Blog.objects)
138+
blog = BlogResourceRelatedField()
134139

135140

136141
class EntryFKSerializer(serializers.Serializer):

‎rest_framework_json_api/mixins.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ def get_queryset(self):
1212
"""
1313
Override :meth:``get_queryset``
1414
"""
15+
queryset = super(MultipleIDMixin, self).get_queryset()
1516
if hasattr(self.request, 'query_params'):
1617
ids = dict(self.request.query_params).get('ids[]')
1718
else:
1819
ids = dict(self.request.QUERY_PARAMS).get('ids[]')
1920
if ids:
20-
self.queryset = self.queryset.filter(id__in=ids)
21-
return self.queryset
21+
queryset = queryset.filter(id__in=ids)
22+
return queryset

‎rest_framework_json_api/relations.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def to_internal_value(self, data):
150150
if not isinstance(data, dict):
151151
self.fail('incorrect_type', data_type=type(data).__name__)
152152

153-
expected_relation_type = get_resource_type_from_queryset(self.queryset)
153+
expected_relation_type = get_resource_type_from_queryset(self.get_queryset())
154154
serializer_resource_type = self.get_resource_type_from_included_serializer()
155155

156156
if serializer_resource_type is not None:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /